PHP – Почему while (mysql_fetch_array (mysql_query ())) петли?

Поэтому у меня есть код:

$sql = "SELECT * from users WHERE level = 2"; $result = mysql_query($sql); while($write = mysql_fetch_array($result)){ echo ''.$write['username'].''; } 

Я хочу сделать его более простым, так что я делаю:

 while($write = mysql_fetch_array(mysql_query("SELECT * from users WHERE level = 2"))){ echo ''.$write['username'].''; } 

Почему первый код не является бесконечным циклом, а второй код?

Solutions Collecting From Web of "PHP – Почему while (mysql_fetch_array (mysql_query ())) петли?"

первый код выполняет mysql_query($sql); ресурса, заданного mysql_query($sql);

второй повторяет запрос и загружает первую строку каждый раз навсегда. поэтому вместо перехода к следующей строке он создает новый запрос и запускается в этой строке.

В качестве примечания – не используйте функции mysql_* . mysqli_ этого используйте mysqli_ или pdo .

Это связано с тем, что ваш запрос находится внутри, который сообщает while, чтобы выполнить запрос снова и снова. Если вы ищете гораздо более простой вариант, вы можете попробовать использовать ORM такой phpactiverecord.