我正在使用谷歌的凌空以json格式发送一些数据,这就是我的数据:
Array([jsonarray]=>["BRMS01","BRMS05","BRMS04"])1
如何在像
之类的查询中解析并使用字符串“BRMS01”"UPDATE stock_list SET qty=qty -1 where itembarcode='".$itembarcode."';";
这是我的凌空代码:
private void updateStock(){
JSONArray itemBarcodejson = new JSONArray();
for (int i=0; i< totalBarcodes.size(); ++i)
{
try {
itemBarcodejson.put(i, totalBarcodes.get(i));
} catch (JSONException e) {
e.printStackTrace();
}
}
final String jsonArray = itemBarcodejson.toString().trim();
StringRequest stringRequest = new StringRequest(Request.Method.POST, UPDATE_URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(AddInvEst.this, "Database updated"+response, Toast.LENGTH_LONG).show();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> params = new HashMap<>();
params.put(KEY_JSONARRAY, jsonArray);
return params;
}
};
RequestQueue requestQueue =Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
我觉得它就像下面的代码片段一样简单:
<?php
require "init.php";
$jsonArray=$_POST['jsonArray'];
foreach($jsonArray as &$value)
{
$query ="UPDATE stock_list SET qty=qty -1 where itembarcode='".$value."';";
}
$res= mysqli_query($con,$query);
mysqli_close($con);
?>
要查看我传递给我的php代码到底是什么,我使用了exit(print_r($ _ POST)); 我得到的回应是Array([jsonarray] =&gt; [“BRMS01”,“BRMS05”,“BRMS04”])1。如何解析这个可以帮忙吗?
感谢任何帮助。谢谢。
答案 0 :(得分:1)
像这样使用:
<?php
require "init.php";
$jsonArray=json_decode($_POST['jsonarray']); //edited this part
foreach($jsonArray as $value)
{
$query ="UPDATE stock_list SET qty=qty-1 where itembarcode='".$value."'";
$res= mysqli_query($con,$query);
}
mysqli_close($con);
?>
答案 1 :(得分:0)
Php没有为您自动解码JSON,您必须手动执行:
$jsonArray=json_decode($_POST['jsonArray']);
其余的可能保持不变。
答案 2 :(得分:0)
你应该能够在没有循环的情况下完成 - 如果你破坏了$_POST['jsonArray']
并使用in
之类的话:
"UPDATE `stock_list` SET `qty`=`qty`-1 where
`itembarcode` in ( '".implode( "','", $_POST['jsonArray'] )."' );";
更新:哎呀,最初我爆炸时我意味着内爆!它应该产生一个sql语句,如:
UPDATE `stock_list` SET `qty`=`qty`-1 where `itembarcode` in ('BRMS01','BRMS02','BRMS03');
/* based upon */
$_POST['jsonArray']=array("BRMS01","BRMS02","BRMS03");
$sql="UPDATE `stock_list` SET `qty`=`qty`-1 where `itembarcode` in ('".implode( "','", $_POST['jsonArray'] )."');";
答案 3 :(得分:0)
mysqli_multi_query - 执行由分号连接的一个或多个查询。
<?
require "init.php";
$jsonArray = json_decode($_POST['jsonArray']);
$runQuery="";
foreach($jsonArray as &$value) {
$query ="UPDATE stock_list SET qty=qty -1 where itembarcode='".$value."';";
$runQuery=$runQuery.$query;
}
if($runQuery!=''){
$res = mysqli_multi_query($con,$runQuery);
}
mysqli_close($con);
?>
有关详情,请点击此Run many mySQL queries through php