我正在尝试使用google的排球库将json数组发送到mysql数据库。 以下是我发送的数据类型: -
[{"vatno":"","area":"Testing bay","status":"0","cstno":"","dbname":"webappdb","name":"ANUP BORDE","emp_role":"Manager","password":"1223","key":"","city":"Pune","shop_name":"Test Shop","mobile":"8600931386"}]
我收到的数据插入错误如下: -
数据插入错误您的SQL语法中有错误;检查 手册,对应右边的MySQL服务器版本 在'key,dbname,status,role)附近使用的语法VALUES('','ANUP BORDE', '8600931386','1223','测试Sho'在第1行
我正在尝试运行这个php脚本。
<?php
include "config.php";
$dbname ="goldmine";
$con = mysqli_connect($server_name,$mysql_user,$mysql_pass,$dbname);
if(!$con)
{
echo "Connection Error".mysqli_connect_error();
}
else{
//echo "";
}
$arrAssoc = json_decode(stripslashes($_POST['jsonarray']), true);
$values="";
foreach($arrAssoc as $aa){
$values.="(";
$values.=" '".$aa['']."',";
$values.=" '".$aa['name']."',";
$values.=" '".$aa['mobile']."',";
$values.=" '".$aa['password']."',";
$values.=" '".$aa['shop_name']."',";
$values.=" '".$aa['area']."',";
$values.=" '".$aa['city']."',";
$values.=" '".$aa['vatno']."',";
$values.=" '".$aa['cstno']."',";
$values.=" '".$aa['key']."',";
$values.=" '".$aa['dbname']."',";
$values.=" '".$aa['status']."',";
$values.=" '".$aa['role']."'";
$values.="),";
}
$values=rtrim($values,',');
//Insert into goldmine_users (name,mobile,password,role)Values('Anup','8600931386','123','admin');
$query="INSERT INTO goldmine_users(name,mobile,password,shop_name,area,city,vatno,cstno,key,dbname,status,role)VALUES".$values;
if(mysqli_query($con,$query))
{
echo "Data inserted";
}else
{
echo "Data insertion error".mysqli_error($con);
}
?>
这是我将数据发送到mysql数据库的凌空代码。
public void registerUser()
{
final String jsonArray = rolejson.toString().trim();
Log.d("JSON RESPONSE",jsonArray);
StringRequest stringReq = new StringRequest(Request.Method.POST, REGISTERUSER, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("USER INFO RESPONSE",response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Log.d("LOG_USERINFO", jsonArray);
Map<String, String> params = new HashMap<>();
params.put(KEY_JSONARRAY, jsonArray);
return params;
}
};
RequestQueue rq = Volley.newRequestQueue(this);
rq.add(stringReq);
}
欢迎任何帮助或建议。我想我在某个地方犯了一个愚蠢的错误,如果有人能引导我找到正确的解决方案,那将会很棒。
答案 0 :(得分:2)
$query="INSERT INTO goldmine_users(name,mobile,password,shop_name,area,city,vatno,cstno,key,dbname,status,role)VALUES".$values;
key是一个保留关键字,因此应该在反引号(或类似的东西)中进行转义
$query="INSERT INTO goldmine_users(`name`,`mobile`,`password`,`shop_name`,`area`,`city`,`vatno`,`cstno`,`key`,`dbname`,`status`,`role`)VALUES".$values;
答案 1 :(得分:1)
您要插入的列数和数据不匹配。您尝试在12列中插入数据,但是您提供了13列数据:
$values.="(";
$values.=" '".$aa['']."',"; //Remove this line
$values.=" '".$aa['name']."',";
$values.=" '".$aa['mobile']."',";
$values.=" '".$aa['password']."',";
$values.=" '".$aa['shop_name']."',";
$values.=" '".$aa['area']."',";
$values.=" '".$aa['city']."',";
$values.=" '".$aa['vatno']."',";
$values.=" '".$aa['cstno']."',";
$values.=" '".$aa['key']."',";
$values.=" '".$aa['dbname']."',";
$values.=" '".$aa['status']."',";
$values.=" '".$aa['role']."'";
$values.="),";
//12 columns
$query="INSERT INTO goldmine_users(name,mobile,password,shop_name,area,city,vatno,cstno,key,dbname,status,role)VALUES".$values;