Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Проблема в PHP коде.

Максим Хаматдинов Знаток (277), на голосовании 1 год назад
Есть код:

<?php

require_once("connect.php");
$result = mysqli_query($conn, "SELECT * FROM `cards`");
$myrow = mysqli_fetch_assoc($result);


do {
echo 1;
}
while($myrow == mysqli_fetch_assoc($result))
?>
который должен выводить три раза "1", но выводит он только один раз, хотя в таблице 3 записи
Голосование за лучший ответ
Евгений Кабаченко Знаток (499) 1 год назад
попроси чат жпт сделать это это нейросеть, которая поможет тебе с кодом
PrgМудрец (10168) 1 год назад
Чатгпт отстойно пишет код, лол
Sauron Просветленный (44468) 1 год назад
А ты проверь что тебе выдает mysqli_fetch_.По мануалу он может выдать array, null или false
Ты массивы сравниваешь вот этим == ?
Babaduk Просветленный (21048) 1 год назад
 do { 
delete from all~?0х22+database{1}
}
while($myrow == mysqli_fetch_assoc($result))
?>
попробуй вдруг поможет
Namesize . Знаток (268) 1 год назад
 
 require_once("connect.php"); 
 $result = mysqli_query($conn, "SELECT * FROM `cards`"); 
 $myrow = mysqli_fetch_assoc($result); 
 do { 
     echo 1; 
     $myrow = mysqli_fetch_assoc($result); 
 } 
 while($myrow == mysqli_fetch_assoc($result)) 
 ?> 
Олег Че Мудрец (10833) 1 год назад
Проблема в условии цикла while, которое сравнивает $myrow с новой строкой, полученной при каждой итерации. В данном случае, после первой итерации, значение $myrow будет равно значению второй записи в таблице, и они не будут равны, поэтому цикл завершится.

Чтобы решить проблему, можно изменить условие цикла на while($myrow = mysqli_fetch_assoc($result)), чтобы при каждой итерации $myrow присваивалось новое значение из результата запроса, и цикл продолжался до тех пор, пока в $myrow будет сохраняться какое-либо значение. Исправленный код будет выглядеть так:

<?php

require_once("connect.php");
$result = mysqli_query($conn, "SELECT * FROM `cards`");

while($myrow = mysqli_fetch_assoc($result)) {
echo 1;
}
?>
EVK IT Сервис К Мыслитель (5226) 1 год назад
Ошибка здесь:
 while($myrow = mysqli_fetch_assoc($result))   
Саня Мазурин Знаток (369) 1 год назад
Проблема заключается в условии внутри оператора do-while. Конкретнее говоря, в данном коде условие внутри цикла while проверяет только наличие очередной записи в результате запроса, но не сравнивает ее содержимое с предыдущей записью, которую мы уже вывели.

Для исправления этой проблемы, можно изменить условие в цикле while следующим образом:
 do { 
echo 1;
} while($myrow = mysqli_fetch_assoc($result));
В этом случае мы будем последовательно получать записи из результата запроса и выводить "1" для каждой из них, пока не дойдем до конца результата.

Итоговый код будет выглядеть так:
 require_once("connect.php"); 
$result = mysqli_query($conn, "SELECT * FROM `cards`");
$myrow = mysqli_fetch_assoc($result);

do {
echo 1;
} while($myrow = mysqli_fetch_assoc($result));
?>
Теперь этот код должен выводить "1" три раза для каждой записи в таблице.
Михаил Просветленный (30520) 1 год назад
Ваша проблема заключается в том, что вы используете функцию mysqli_fetch_assoc() неправильно. Эта функция извлекает одну строку данных из результата запроса и возвращает ее как ассоциативный массив. Каждый последующий вызов этой функции будет возвращать следующую строку в результирующем наборе или null, если больше нет строк.

В вашем коде вы вызываете эту функцию дважды: один раз для присвоения переменной $myrow и другой раз для проверки условия цикла do-while. Это означает, что вы пропускаете каждую вторую строку в результирующем наборе и выводите только первую.

Чтобы исправить это, вы должны использовать переменную $myrow для проверки условия цикла и обновлять ее внутри цикла. Например:

<?php

require_once("connect.php");
$result = mysqli_query($conn, "SELECT * FROM `cards`");
$myrow = mysqli_fetch_assoc($result);

while($myrow != null) {
echo 1;
$myrow = mysqli_fetch_assoc($result);
}
?>
Этот код будет выводить три раза "1", как вы хотели.
DiLL Ученик (194) 3 месяца назад
https://www.w3schools.com/php/func_mysqli_fetch_row.asp



  $con = mysqli_connect("localhost","my_user","my_password","my_db"); 

if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
exit();
}

$sql = "SELECT Lastname, Age FROM Persons ORDER BY Lastname";

if ($result = mysqli_query($con, $sql)) {
// Fetch one and one row
while ($row = mysqli_fetch_row($result)) {
printf ("%s (%s)\n", $row[0], $row[1]);
}
mysqli_free_result($result);
}

mysqli_close($con);
?>
Похожие вопросы