我试图显示我的查询结果,但我没有得到任何来自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>";
}
答案 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))