从mysql获取最后100行不工作| JSON格式

时间:2014-09-12 21:26:50

标签: php mysql json

我正在尝试获取最后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,但代码现已破坏,并且未显示任何错误。

2 个答案:

答案 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是您需要用于从数据库中检索多个结果的方法。