Массив PHP не получает данные из запроса mysqli, но запрос работает в PHPmyadmin - PullRequest
0 голосов
/ 23 марта 2012

Я пытаюсь показать результат моего запроса, но я не получаю вывод от php.Я пробовал несколько разных циклов, но не могу ничего показать на странице.Запрос работает в PHPmyadmin, и при загрузке веб-страницы не отображаются ошибки.Это код.Дайте мне знать, если вам нужна дополнительная информация.Я сделал print_r ($ data) и получил такой результат:

mysqli_result Object ([current_field] => 0 [field_count] => 8 [lengths] => [num_rows] => 2 [type] => 0) 2

$select = "SELECT u.`info_id`, u.`info`, u.`removed`, m.`date_added`, m.`title`, m.`summary`, m.`poster`, m.`imdb`, m.`cv` ".
            "FROM `user_movies` AS u ".
            "INNER JOIN `movies` AS m ".
            "USING (`movie_id`) ".
            "WHERE u.`user_id` = '{$_SESSION['user_id']}' ".
            "AND u.`info` = '0' AND u.`removed` = '0' ".
            "ORDER BY m.`date_added` DESC, m.`movie_id` ASC";
$data = mysqli_query($connect, $select) or die ('error getting user movies');
$movies = array();
while ($movie = mysqli_fetch_array($data));
    {       
    array_push($movies, $movie);
    }

foreach ($movies as $movie)
    {
    $id = str_replace(' ', '', $movie['title']);
    $poster = $movie['poster'];
    $title = $movie['title'];
    $summary = $movie['summary'];
    $imdb = $movie['imdb'];

    echo "<div class='movie' id='$id'><img src='$poster' alt='$title' />" .
    "<p><strong>$title</strong><br/>$summary<br/>" .
    "<a href='$imdb'title='www.imdb.com'>More info at IMDb</a></p></div>";
    }

Ответы [ 3 ]

0 голосов
/ 23 марта 2012

SQL выглядит нормально, хотя с точки зрения стиля я предпочитаю

            "WHERE u.user_id = '{$_SESSION['user_id']}' ".

Мой непосредственный Q - $ _SESSION ['user_id'] правильно настроен, потому что если нет, то запрос вернет ноль строк.

0 голосов
/ 24 марта 2012

В конце цикла while была точка с запятой, мешающая array_push выполнять свою работу

while ($movie = mysqli_fetch_array($data));

должно быть просто

while ($movie = mysqli_fetch_array($data))
0 голосов
/ 23 марта 2012

У меня была похожая проблема.Я предполагаю, что вы уже убедились, что ваше соединение работает и у вас есть доступ к базе данных.Далее я предполагаю, что вы распечатали оператор SELECT и вставили его в PHPMyAdmin.Я сделал то же самое и несколько часов сводил с ума.

PHPMyAdmin на самом деле выполняет некоторое переформатирование, прежде чем запустить его.В частности, phpMyAdmin будет ставить обратные метки ("` ", обратная одинарная кавычка) вокруг имен полей и / или имен таблиц.Это указывает на то, что между обратными галочками находится имя поля таблицы.Это особенно важно, если вы используете зарезервированное слово в качестве имени поля.Например, если у вас есть поле с именем «select» или «order», им понадобятся обратные галочки.В данном конкретном случае я подозреваю поле, которое вы назвали «дата».Поставьте галочки вокруг имен полей и посмотрите, что произойдет.

В качестве теста попробуйте удалить это поле из запроса.В дальнейшем я бы не стал использовать поле с именем «date».Лучше использовать что-то вроде «create_date» или «rental_date».

Удачи.

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