Что может привести к зависанию моего запроса MySQL после двух результатов? - PullRequest
0 голосов
/ 12 июня 2009

У меня есть простой запрос, который я не могу распечатать на своей странице:

$results = mysql_query("SELECT * FROM andyasks ORDER BY date");
$test = mysql_fetch_array($results, MYSQL_BOTH);
foreach ($test as $row){
    print($row[questions]);
}

Что это выводит (непредсказуемо, на мой взгляд) только первая буква каждого поля таблицы, только для первых двух строк. Таким образом, таблица 75 строк x 5 столбцов должна показывать 75 «вопросов», но вместо этого она показывает «00WWFFAA00», которая является первой буквой каждой ячейки первых двух строк. Что происходит?

Ответы [ 2 ]

5 голосов
/ 12 июня 2009

Попробуйте это.

$results = mysql_query("SELECT * FROM andyasks ORDER BY date");

while($row = mysql_fetch_array($results))
{
    print($row["questions"]);
}

Причина в том, что вы будете делать только один выбор с

$test = mysql_fetch_array($results, MYSQL_BOTH);

Вот почему вы должны иметь это в цикле. Он извлекает одну строку, и цикл while завершается, когда строк больше нет (поскольку он возвращает false, если строк больше нет).

4 голосов
/ 12 июня 2009

Просто чтобы объяснить, что не так с вашим кодом ...

Ваш код загружает только первую строку в переменную $test. Этот массив содержит каждый столбец дважды - с ключом как по индексу, так и по имени (что и делает MYSQL_BOTH). Если вы вставите print_r($test); перед циклом, он выведет содержимое массива, чтобы вы могли видеть, что происходит.

То, что делает ваш цикл, проходит через каждый столбец и извлекает его значение в $row в виде строки. Когда вы используете синтаксис массива (т. Е. $row["questions"]) для переменной, содержащей строку, PHP извлекает символ по выбранному вами индексу. Поскольку "question" не является числом, оно равно 0, поэтому вы получаете первую букву каждого столбца.

Олафур Вааге имеет правильный синтаксис того, что вы пытаетесь сделать.

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