В чем разница между этими PHP скриптами? - PullRequest
0 голосов
/ 11 апреля 2020

Я новичок в PHP, и я создаю основы и простые проекты для понимания языка. Я пытаюсь получить информацию из базы данных MySQL, и я использовал этот метод:

$con = new mysqli("localhost", "root", "", "projects_colors");

if(mysqli_connect_error()){
    echo '<h1>Error:</h1>';
    die('There was an error while connecting to the database: ' . mysqli_connect_error());
}

$stmt = 'SELECT * FROM colors';
$result = $con -> query($stmt);
$colors = $result -> fetch_array():

while($colors){
    echo '<p>ID: ' .colors['id']. '</p>';
    echo '<p>Name: ' .colors['name']. '</p>';
    echo '<p>Hexadecimal: ' .colors['hexadecimal']. '</p>'; 
}

И это другое:

$con = new mysqli("localhost", "root", "", "projects_colors");

if(mysqli_connect_error()){
    echo '<h1>Error:</h1>';
    die('There was an error while connecting to the database: ' . mysqli_connect_error());
}

$stmt = 'SELECT * FROM colors';
$result = $con -> query($stmt);

while($colors = $result -> fetch_array()){
    echo '<p>ID: ' .colors['id']. '</p>';
    echo '<p>Name: ' .colors['name']. '</p>';
    echo '<p>Hexadecimal: ' .colors['hexadecimal']. '</p>'; 
}

Первый метод не работает, но второй работает нормально. Почему это?

Ответы [ 2 ]

2 голосов
/ 11 апреля 2020

Время входит в бесконечное число l oop в первом. Вы проверяете значение $ colors, которое не изменяется ни в одной части l oop, и, таким образом, всегда истинно или не вводится в l oop, если ложно.

Я не уверен, но в во-вторых, $ result-> fetch_array (), вероятно, обновляет указатель внутри $ result, который возвращает false после получения всех результатов.

2 голосов
/ 11 апреля 2020

Посмотрите на это так: если у вас нет чего-то, что изменится $colors, то это oop никогда не прекратится. Первый пример просто ошибочен, он никогда не сможет работать так, как задумано, он будет просто echo навсегда.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...