我正在尝试获取最后100行,但结果只显示了一行
这是我的PHP代码:
<?php
require_once("variables.php");
$db = new ezSQL_mysql($GLOBALS['database_username'],$GLOBALS['database_password'],$GLOBALS['database_database'],$GLOBALS['database_server']);
header('Content-Type: application/json');
echo "{\"office\":\"0\",\"dept\":{\"desk\":[";
$symbols = addslashes($_GET['symbols']);
$symbolsArr = explode(",", $symbols);
foreach($symbolsArr as $s) {
$last = $db->get_row("select * from data where name='$s' order by id desc limit 0,100");
$jsonArray = array('name' => $s,
'phone' => $last->phone,
'active' => $last->active);
echo json_encode($jsonArray);}
echo "]}}";
?>
更新&GT;基于以下建议,我已将get_row更改为get_results,但代码现已破坏,并且未显示任何错误。
答案 0 :(得分:2)
阅读您正在使用的数据库类(ezSQL)的文档:
----------------------------------------------------
Example 2
----------------------------------------------------
// Get one row from the database..
$user = $db->get_row("SELECT name,email FROM users WHERE id = 2");
echo $user->name;
echo $user->email;
您正在发出专门用于获取一行的语句。
您要使用的是get_results()
方法,而不是get_row()
方法。
我重新阅读了你的问题并看到你正在进行限制0,100,它返回从0开始的100行(第一个)。我以为你试图循环那些行,但我可以看到你实际上只是试图获得最后一行...我的坏,derp ..好在这里 - 你的查询中你有点逆转 - 应该是100,1为你想要第100行,只有1行。
$last = $db->get_row("select * from data where name='{$s}' order by id desc limit 100,1");
$jsonArray = array('name' => $s,
'phone' => $last->phone,
'active' => $last->active);
答案 1 :(得分:2)
由于您尝试获取最后100行,请使用以下语句:
$last = $db->get_results("select * from data where name='$s' order by id desc limit 100");
而不是
$last = $db->get_row("select * from data where name='$s' order by id desc limit 0,100");
ezSql get_results是您需要用于从数据库中检索多个结果的方法。