mysql查询只返回一行

时间:2013-11-28 20:54:33

标签: php mysql mysqli

我有以下查询,我想检索所有行,但是,我只获得最后一行。我在这做错了什么?我在表中有三条记录。

$db = new mysqli('localhost', 'root', '', 'database');
$stmt = $db->prepare("SELECT * from messages");
echo $db->error;
$stmt->execute();
$result = $stmt->get_result();
while($row = $result->fetch_assoc())
{
$test = $row['message'];
}

echo $test;

5 个答案:

答案 0 :(得分:2)

好吧,你总是覆盖$ test变量,所以你应该放入while echo $ test或保存在一个数组中然后print_r或var_dump那个数组

while($row = $result->fetch_assoc())
{
$test = $row['message'];
echo $test;
}

$test = array();
while($row = $result->fetch_assoc())
    {
    $test[] = $row['message'];

    }
    print_r($test);

答案 1 :(得分:1)

你回应哪一排?看看$ test是在循环中写入的,但是在完成最后一行之前你不会回显。

while($row = $result->fetch_assoc())
{
$test = $row['message'];
}

echo $test;

你需要把回声放在循环中

while($row = $result->fetch_assoc())
{
    $test = $row['message'];
    echo $test;
}

答案 2 :(得分:1)

您的查询正在检索所有行 - 但是获取结果的代码只输出最后一行。您只需echo $test一次,因此您只会获得分配给它的最后一个值。如果要全部查看它们,请将echo移动到循环内,或将其设为数组:

while($row = $result->fetch_assoc())
{
    $test = $row['message'];
    echo $test;
}

while($row = $result->fetch_assoc())
{
    $test[] = $row['message'];
}
print_r($test);

答案 3 :(得分:1)

完全按照您的意愿进行修改

$db = new mysqli('localhost', 'root', '', 'database');
$stmt = $db->prepare("SELECT * from messages");
echo $db->error;
$stmt->execute();
$result = $stmt->get_result();
$test = '';
while($row = $result->fetch_assoc())
{
$test .= $row['message'];
}

echo $test;

答案 4 :(得分:0)

您只需在循环中覆盖$ test,最后它只包含最后一条消息。