Member 13637584 Ответов: 1

Остановите В то время как цикл от зацикливания


Привет Я пытаюсь отобразить элементы из базы данных, однако цикл while продолжает зацикливаться.

Есть ли в любом случае я могу остановить его петлю вокруг каждого из них?

См. код ниже.

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

<?php

$1 = ("cheese");
$2 = ("yoghurt");
$3 = ("egg");

   $dbQuery=$conn->prepare("select * from Results");
   $dbQuery=$conn->prepare("select * from Food where Keyword = '$1'");
   $dbQuery->execute();
   echo $dbQuery->rowCount()."\n";
   while ($dbRow=$dbQuery->fetch(PDO::FETCH_ASSOC)) {
if ($1 = '1') {
  echo "<br><br>".$dbRow["Name"]."<br>"."<br><img src=/".$dbRow['Picture']."' width='150' height='150' float='left'/>"."".$dbRow["Instructions"]."\n";
} else {
    echo "";
}
 $dbQuery=$conn->prepare("select * from Food where Keyword = '$2'");
   $dbQuery->execute();
if ($2 = '1') {
  echo "<br><br>".$dbRow["Name"]."<br>"."<br><img src=/".$dbRow['Picture']."' width='150' height='150' float='left'/>"."".$dbRow["Instructions"]."\n";
} else {
    echo "";
}
 $dbQuery=$conn->prepare("select * from Food where Keyword = '$3'");
   $dbQuery->execute();
if ($3	 = '1') {
  echo "<br><br>".$dbRow["Name"]."<br>"."<br><img src=/".$dbRow['Picture']."' width='150' height='150' float='left'/>"."".$dbRow["Instructions"]."\n ";
} else {
    echo "";
}
   }
?>

Richard MacCutchan

Вам нужно проверить, какой результат возвращает операция выборки.

1 Ответов

Рейтинг:
1

Patrice T

$dbQuery=$conn->prepare("select * from Food where Keyword = '$1'");

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

$1 = ("cheese");
$2 = ("yoghurt");
$3 = ("egg");

$dbQuery=$conn->prepare("select * from Results");
$dbQuery=$conn->prepare("select * from Food where Keyword = '$1'");
$dbQuery->execute();
echo $dbQuery->rowCount()."\n";
while ($dbRow=$dbQuery->fetch(PDO::FETCH_ASSOC)) {
	if ($1 = '1') {
		echo "<br><br>".$dbRow["Name"]."<br>"."<br><img src=/".$dbRow['Picture']."' width='150' height='150' float='left'/>"."".$dbRow["Instructions"]."\n";
	} else {
		echo "";
	}
	$dbQuery=$conn->prepare("select * from Food where Keyword = '$2'");
	$dbQuery->execute();
	if ($2 = '1') {
		echo "<br><br>".$dbRow["Name"]."<br>"."<br><img src=/".$dbRow['Picture']."' width='150' height='150' float='left'/>"."".$dbRow["Instructions"]."\n";
	} else {
		echo "";
	}
	$dbQuery=$conn->prepare("select * from Food where Keyword = '$3'");
	$dbQuery->execute();
	if ($3	 = '1') {
		echo "<br><br>".$dbRow["Name"]."<br>"."<br><img src=/".$dbRow['Picture']."' width='150' height='150' float='left'/>"."".$dbRow["Instructions"]."\n ";
	} else {
		echo "";
	}
}
?>

Профессиональные редакторы имеют эту функцию наряду с другими, такими как сопоставление скобок, которые полезны программистам.
Блокнот++ Главная Страница[^]
-----
Нота: ваш код действительно странный, вы должны объяснить, что он должен делать.


Member 13637584

Я пытаюсь отобразить еду, которая соответствует предпочтениям пользователя.

Patrice T

Почему у вас есть петля На первом месте?