safaa AL-shaarri Ответов: 1

Php update qeury не работает без ошибок


привет всем, у меня есть проект, где можно получить значение из таблицы, а затем обновить его на другой таблице, вот код, который я думаю, что код хорош, но я не знаю, почему он не работает :
код выбора работает это просто обновление

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

if($server)
	{
				echo "serve done<br>";
		
				$MutashabehatTable2='SELECT * FROM mutashabehat WHERE SurahNumber=2 AND AyahNumber=1 AND SurahNumber2=13 AND AyahNumber2=1';
				
				$sql = mysqli_query($server,$MutashabehatTable2 );// get Fadwa and sumaih mutashabeha table
				
				$numpOfRows2 = mysqli_num_rows($sql); // similar verses number of rows
			echo $numpOfRows2."<br>";
			//If there are similar verses 
			if( $numpOfRows2 > 0)
		{
			
				$row = mysqli_fetch_assoc($sql);
							$DifferentParts1= "". $row['DifferentParts1'];
				$DifferentParts2= "". $row['DifferentParts2'];
				$mark= "".$row['Markers'];
				echo $MutashabehatTable1='UPDATE \'mutashabeha\' SET SimilarParts = \''.$row['SimilarParts'].'\', DifferentParts1 = \'$DifferentParts1\', DifferentParts2 =  \'$DifferentParts2\' , Markers = \'$mark\' WHERE SurahNumber=\'2\' AND AyahNumber= \'1\' AND SurahNumber2= \'13\' AND AyahNumber2= \'1\' ';
				
				$sql2 = mysqli_query($server,$MutashabehatTable1 );// get Fadwa and sumaih mutashabeha table
				if($sql2)
					echo 'done';
				else
	echo mysqli_error();
			die;			
		}//end row number if
	}//end if connection done
	//If conn Failed 
	else{
				die("connection failed: ".mysqli_connect_error());

	}

1 Ответов

Рейтинг:
0

Patrice T

Я подозреваю, что Эхо делает что-то, чего вы не ожидали. вы также должны проверить синтаксис инструкции sql и использование нескольких одинарных кавычек.

Цитата:
echo $MutashabehatTable1='UPDATE \'mutashabeha\' SET SimilarParts = \''.$row['SimilarParts'].'\', DifferentParts1 = \'$DifferentParts1\', DifferentParts2 =  \'$DifferentParts2\' , Markers = \'$mark\' WHERE SurahNumber=\'2\' AND AyahNumber= \'1\' AND SurahNumber2= \'13\' AND AyahNumber2= \'1\' ';

Не решение вашего вопроса, а еще одна проблема, которая у вас есть.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? - Обмен Стеками Информационной Безопасности[^]
Цитата:
echo "serve done<br>";

Совет: использование двойных кавычек вокруг строк упростит ваш оператор update.