Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从PHP传递JSON的有效方法_Php_Sql_Json - Fatal编程技术网

从PHP传递JSON的有效方法

从PHP传递JSON的有效方法,php,sql,json,Php,Sql,Json,我有一个JSONArray: [{"items_id":"13","total":"1"}, {"items_id":"216","total":"0"},{"items_id":"16","total":"1"}] 有时,每个对象都有两个以上的属性?。但我只是在这里展示原理。在Java中,我只需要获取总数。我不需要任何东西 我假设它会出现,因为下面是我在PHP中的MySQL查询: $count_query_result=mysql_query(" SELECT items.items_id

我有一个JSONArray:

 [{"items_id":"13","total":"1"}, {"items_id":"216","total":"0"},{"items_id":"16","total":"1"}]
有时,每个对象都有两个以上的属性?。但我只是在这里展示原理。在Java中,我只需要获取总数。我不需要任何东西

我假设它会出现,因为下面是我在PHP中的MySQL查询:

$count_query_result=mysql_query("
SELECT items.items_id, 
COUNT(ratings.item_id) AS total
FROM `items`
LEFT JOIN ratings ON (ratings.item_id = items.items_id)
WHERE items.cat_id = '{$cat_id}'  AND items.spam < 5
GROUP BY items_id ORDER BY TRIM(LEADING 'The ' FROM items.item) ASC;");
我只想要三个JSON编码的属性,三个输出变量中各一个。我想要属性合计、费率和项目

所以我的问题是,我可以去掉不需要的items\u id属性吗?或者我甚至需要这样做?我知道我需要在SQL中使用它才能使查询正常工作,但是如何在JSONArray中删除它呢

我在想,如果我有一个包含数百或数千个项目的列表,我可以节省一半的空间和时间吗?通过只输出我需要的JSON属性,这种想法正确吗

编辑:根据要求编辑更多代码:

while($row=mysql_fetch_assoc($count_query_result))
    $output[]=$row;
while($row=mysql_fetch_assoc($average_query_result))
    $output2[]=$row;
while($row=mysql_fetch_assoc($items_query_result))
    $output3[]=$row;

print(json_encode(array($output,$output2,$output3)));
mysql_close();

使用JSONObject解析字符串。只需将字符串作为参数放入JSONObject的构造函数中

jObject = new JSONObject(myString);
之后,可以从JSONObject中检索所有变量

jObject = new JSONObject(myString);
对于php方面:

使用end json_encode在json和混合变量之间切换。 混合变量后,删除不需要的内容并将其转换回json。


取消设置不需要的值,然后输出json,我认为在SQL查询中不需要它。如果只在查询上下文中需要数据库中的数据,则无需选择它。尝试只执行以下操作:

从…中选择计数*


我知道这就是我在Java/Android中获得所需单个对象的方式——但我想问的是PHP中的切换方法。在它进入Java之前,有没有办法解决这个问题?好的,公平的问题。当时,我认为这是有道理的。但在我问过之后,很明显这是一个更加面向php的系统。我想我可以把它去掉。除非我做错了,否则这几乎可以用。当我循环遍历结果时,我正在做这个unset$row['items\u id'。我只为第一个$output做了这个操作,效果很好。第二个$output2说'[false]’。所以它会对其他输出产生不利影响?嗯,你能发布更多的代码来说明如何从SQL到$output、$output2等吗?好的,我已经这样做了。我还想了解更多我想做的事情,并添加了解释…不确定这是否会起作用,因为查询需要items_id。正如你所说的那样,它会起作用mysql:为我抓取ID和Countratings.itemid。只要尝试一下,如果不起作用,请报告: