Moitsi Machola Nkwamba Sabata Ответов: 1

Mysql не удается сохранить некоторые записи


У меня есть многопользовательское приложение, разработанное на PHP для управления записями студентов. Приложение использует цикл foreach для обновления каждой записи студента. В большинстве случаев приложение работает просто отлично, но есть несколько случаев, когда пользователи сообщают, что их записи не были сохранены, что может быть причиной этой проблемы?

Что я уже пробовал:

<pre>foreach($ExamMarks as $Key=> $Value)
				{
				

				$Student = array(explode(" ",$Value)); //This will convert the Values into a multi-dimensional array and store the new values in $Student

						
								
							if(trim($_POST[$Student[0][1]]) == "Null" || trim($_POST[$Student[0][1]]) == " ")//If the student has a mark
							{

										$Grade = "";
										$Comments = "";
										$Points = "";

							}
							
										else if(trim($_POST[$Student[0][1]]) >= 80)
										{

												$Grade = "A";
												$Comments = "Outstanding performance. Keep it up!";
												$Points = 9;

										}
										else if (trim($_POST[$Student[0][1]]) >= 70)
										{


										   $Grade = "B";
										   $Comments = "Good performance. Aim higher.";
										   $Points = 7;

										 }

										else if (trim($_POST[$Student[0][1]]) >= 60)
										{


											$Grade = "C";
											$Comments = "Fairly good performance. Work hard.";
											$Points = 5;

										}
										else if (trim($_POST[$Student[0][1]]) >= 40)
										{


											$Grade = "D";
											$Comments = "Average performance. Work harder.";
											$Points = 3;

										}
										else if (trim($_POST[$Student[0][1]]) >= 20)
										{

											$Grade = "E";
											$Comments = "Below Average. Put more effort.";
											$Points = 1;

										 }
										 else
										{


											$Grade = "U";
											$Comments = "Ungraded";
											$Points = 0;

										}

$updateSQL = "UPDATE student_exam_marks_exam SET
											   ExamMark = " 		. preg_replace('#[^0-9]#i', '',trim($_POST[$Student[0][1]])) . ",
											   ExamGrade = '" 		. $Grade . "',
											   Comments = '" 		. $Comments . "',
											   Points = " 			. $Points . " ,
											   TeacherID = '" 		. $row_Select_Teacher["TeacherID"] . "'
											   WHERE ExamID = " 	. $ExamID . " AND StudentID = " . trim($Student[0][0]) . "
											   AND SubjectID = " . $_GET["SubjectID"] . " AND AcademicYear = " . $row_Select_Exams["AcademicYear"].";" ;
									   
	
							      mysqli_select_db($con, $database);
								  $Result1 = mysqli_query($con,$updateSQL) or die(mysql_error($con));
}

1 Ответов

Рейтинг:
2

Wendelius

Поскольку вы связываете значения переменных непосредственно с оператором SQL, одна из проблем заключается в том, что если значение не является допустимым с точки зрения SQL, оператор завершится ошибкой. Кроме того, это оставляет вас открытыми для SQL-инъекций.

Для правильного использования параметров ознакомьтесь с этим обсуждением: mysql-как я могу предотвратить SQL-инъекцию в PHP? - переполнение стека[^]