我有以下查询,我想检索所有行,但是,我只获得最后一行。我在这做错了什么?我在表中有三条记录。
$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;
答案 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,最后它只包含最后一条消息。