Исчезают массивы, созданные с помощью mysql_fetch_array () после использования? - PullRequest
1 голос
/ 27 января 2010

У меня типичный запрос к базе данных:

$query = mysql_query('SELECT titulo,referencia FROM cursos WHERE tipo=1 AND estado=1');

и я могу преобразовать его в массив и распечатать данные:

while ($results=mysql_fetch_array($query)): ?>
echo $results['referencia'];
// and so...
endwhile;

но в некоторых случаях мне нужно напечатать те же данные в другой части веб-страницы, но массив $ results кажется пустым (я использую var_dump($results) и получаю bool(false)). Я планирую использовать то, что я изучил, читая Создать массив PHP из столбца MySQL , но не предполагается, что mysql_fetch_array() создает массив? Итак, что случилось?

Ответы [ 2 ]

2 голосов
/ 27 января 2010

Tae, причина того, что ваш $result равен false в конце цикла while, заключается в том, что mysql_fetch_array возвращает false, когда достигает конца набора запросов. (См. PHP Docs по теме). Когда вы достигаете конца запроса, для набора $results устанавливается значение false и цикл while завершается. Если вы хотите сохранить массивы (результаты строк базы данных) на потом, сделайте, как рекомендует Chacha102, и сохраняйте каждую строку по мере ее извлечения из базы данных.

$data = array();
while($results = mysql_fetch_array($query)) {
    $data[] = $results;
}
foreach ($data as $result_row) {
    echo $result_row['referencia'];
    ... etc.
}
1 голос
/ 27 января 2010

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

while($results = mysql_fetch_array($query))
{
    $data[] = $results;
}

Теперь все ваши результаты находятся в $data, и вы можете делать все, что захотите.


Как сказал Энтони, вы можете убедиться, что данные действительно извлекаются из запроса. Проверьте, возвращаются ли какие-либо результаты echo mysql_num_rows($query). Это должно дать вам количество строк, которые вы получили

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