PHP数组没有从mysqli查询获取数据,但查询在PHPmyadmin中工作

时间:2012-03-22 21:44:21

标签: php arrays mysqli

我试图显示我的查询结果,但我没有得到任何来自PHP的输出。我尝试了几个不同的循环,但我无法在页面上显示任何内容。该查询在PHPmyadmin中工作,并且在加载网页时没有显示错误。这是代码。如果您需要更多信息,请与我们联系。我做了print_r($ data)并得到了这个结果:

mysqli_result对象([current_field] => 0 [field_count] => 8 [个长度] => [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 :(得分:0)

我遇到过类似的问题。我假设您已经验证您的连接有效,并且您可以访问数据库。我进一步假设您已打印出SELECT语句,并将其粘贴到PHPMyAdmin中。我做了同样的事情,并被驱使疯了几个小时。

PHPMyAdmin在运行之前实际上进行了一些重新格式化。特别是,phpMyAdmin将在字段名称和/或表名称周围添加反引号(“`”,反向单引号)。这是为了指定back-ticks之间的内容是表字段的名称。如果您使用保留字作为字段名称,这一点尤为重要。例如,如果您有一个名为“select”或“order”的字段,则需要反向标记。在这个特定的例子中,我怀疑你称之为“日期”的字段。在你的字段名称后面放置一些标记,看看会发生什么。

作为测试,请尝试从查询中删除该字段。展望未来,我不会使用名为“date”的字段。最好使用“create_date”或“rental_date”之类的东西。

祝你好运。

答案 1 :(得分:0)

虽然在我喜欢的风格

方面,SQL似乎还可以
            "WHERE u.user_id = '{$_SESSION['user_id']}' ".

我的即时Q是$ _SESSION [&#39; user_id&#39;]正确设置,因为如果没有,那么查询将返回零行。

答案 2 :(得分:0)

while循环在结尾处有一个半冒号,阻止array_push完成其工作

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

应该只是

while ($movie = mysqli_fetch_array($data))