2017-07-12 49 views
1

我正在开发一个Android应用程序,它向我编写数据库的服务器发出一些请求。在服务器上,我使用PHP进行查询。 现在我编写了这段代码来进行查询,并将结果推送到一个数组中,我可以稍后在“Android部分”中使用java语言。 这是我的PHP代码:php json_encode只返回数组的第一行

$query="SELECT * FROM $tbl_name WHERE user='$myusername'"; 
$res=mysql_query($query); 
$posts = array(); 
if(mysql_num_rows($res)) { 
    while($post[] = mysql_fetch_assoc($res)) { 
    array_push($posts, $post); 
    } 
} 
echo json_encode(array('posts'=>$posts)); 

的问题是,当我尝试得到的结果在java中我只能看到结果的第一行。我敢肯定,我有超过1行,因为我试图打印mysql_num_rows($res),结果大于1. 我该如何解决这个问题?

编辑。 只是为了澄清。我打电话给我的服务器,我使用Android AsynTask中的php。在onPostExecute方法我做这样的事情:

String res = result.toString(); 

其中的结果是,我从doInBackground方法获得的JSONObject。 也许我在做错误在这里,因为你所有的解决方案总是让我只查询的结果的第一行。

+0

'mysql_fetch_assoc()'一次只读取一行,这就是为什么你使用while循环来获取所有记录的原因。用'$ path'替换'$ path []' –

+0

如果我将$ post []替换为$ post nothing change .. –

+0

停止使用'mysql_ *'函数。它们在PHP 7+中被删除,并在之前的版本中被弃用。他们也是不安全的,不支持准备好的陈述。你应该改用[PDO](http://php.net/manual/en/book.pdo.php)或['mysqli_ *'](http://php.net/manual/en/book.mysqli .php)功能。 – apokryfos

回答

0

这里不需要指定数组。

变化:while($post[] = mysql_fetch_assoc($res)) {

为:while($post = mysql_fetch_assoc($res)) {

您可以随时var_dump($posts)while指导和检查,如果你得到你想要的东西。