PHP MySQL WHERE语句不会让我读取多行

时间:2014-02-13 17:24:47

标签: php mysql

我正在使用PHP和MySQL的网站上工作,但我最近遇到了一个非常烦人的问题,我似乎无法修复。我有一个MySQL查询来读取数据库中的每个帖子,但是一旦我添加一个“WHERE”语句,它只能读取一个帖子,当删除WHERE语句时,它可以全部读取它们。

我正在使用的代码如下:

的index.php

<?php

include 'includes/conn.php';

if(isset($_GET['p']) && isset($_GET['pg']))
{
    if(is_numeric($_GET['p'])){
        $id = $_GET['p'];
    }else{
        header("Location: /");
        exit();
    }
}else{
    $page = 1;
}

$post_count = $conn->query("SELECT Title FROM Posts WHERE Page='Home'");
$per_page = 10;
$pages = ceil($post_count->num_rows/$per_page);

if($page <= 0)
    $start = 0;
else
    $start = $page * $per_page - $per_page;

$prev = $page - 1;
$next = $page + 1;

$query = $conn->prepare("SELECT Title, Body FROM posts WHERE Page='Home' ORDER BY ID desc LIMIT $start, $per_page");
$query->execute();
$query->bind_result($title, $body);

while($query->fetch())
{
    echo '<div class="post">' .
    '<h2>' . nl2br($title) . '</h2>' .
    '<p>' . nl2br($body) . '</p><br /><br />' .
    '</div>';
}

if($prev > 0)
{
    $prevlink = "/?p=" . $prev;
?>

<center><a href="<?php echo $prevlink;?>">Previous</a></center>

<?php
}

if($page < $pages)
{
    $nextlink = "/?p=" . $next;
    echo '<center><a href="'.$nextlink.'">Next</a></center>';
}
?>

Conn.php:

<?php

$dbhost = "localhost";
$db = "mw";
$dbuser = "root";
$dbpass = "root";

$conn = new mysqli($dbhost, $dbuser, $dbpass, $db) or die('Could not connect: ' . mysql_error());

?>

表格布局如下:

enter image description here

enter image description here

输出是这样的:

使用WHERE:http://i.stack.imgur.com/0L8Bj.png

没有WHERE:http://i.stack.imgur.com/UxcqX.png

如果有人能够指出我的错误 - 并告诉我如何解决它 - 那就太棒了

1 个答案:

答案 0 :(得分:2)

添加

echo "SELECT Title, Body FROM posts WHERE Page='Home' ORDER BY ID desc LIMIT $start, $per_page"; 

获取输出并直接在数据库中使用它(例如CLI或phpMyAdmin)。如果您直接查询数据库,并且仍然只给出一个结果,那么唯一的答案是只有一行有一个列Page =“Home”。或许第二行的列有前导/尾随空格?

编辑:根据你的评论,领先/尾随空格就是这样!