我正在使用凌空连接来自android的php,但它显示我的错误请帮助我这里一个我的java& php代码.php连接到数据库php show -1' success' => false result。
public class main extends Activity{
String i = "";
String d = "";
String ya = "";
String is = "";
String to="";
final Response.Listener<String> responseListener = new Response.Listener<String>() {
@Override
public void onResponse(String response)
{
JSONObject jsonResponse = null;
try {
JSONArray array = new JSONArray(response);
jsonResponse = array.getJSONObject(0);
Log.w(TAG, "onResponse: jsonresponse" + response.toString());
boolean success = jsonResponse.getBoolean("success");
if (success) {
i = jsonResponse.getString("i");
d = jsonResponse.getString("d");
} else {
}
} catch (JSONException e) {
e.printStackTrace();
}
}
Inp insQ = new Inp(ya,is ,to ,responseListener);
RequestQueue queue = Volley.newRequestQueue(main.this);
queue.add(insQ);}
// next ins class - commented at edit by Jeff
public class Ins extends StringRequest
{
public static final String REGISTER_REQUEST_URL = "edu.php";
private static final String TAG = "Ins";
private Map<String,String> params;
public Ins(String ya, String is, String to, Response.Listener listener)
{
super(Request.Method.POST, REGISTER_REQUEST_URL, listener, null);
Log.w(TAG, "Ins: " + ya + is + to );
params = new HashMap<>();
params.put("ya", ya);
params.put("is",is);
params.put("to", to + "");
Log.w(TAG, "Ins working well " + ya + is +to );
}
@Override
public Map<String,String> getParams() {
return params;
}
}
php code start
<?php
$servername = "localhost";
$username = "****";
$password = "*****";
$dbname = "*****";
$em = $_POST['ya'];
$one = $_POST['is'];
$to = $_POST['to'];
$d = date('Y-m-d');
$y = date('y');
$m = date('m');
$d = date('d');
$conn = mysqli_connect($servername, $username, $password, $dbname);
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$sqll = "SELECT * FROM jio";
$res = mysqli_query($conn,$sqll);
$rowC = mysqli_num_rows($res);
$rowC = $rowC%999 + 1;
if($rowC < 10){
$i = $year.$mon.$day.'00'.$rowC;
}elseif (rowC < 100) {
$i = $year.$mon.$day.'0'.$rowC;
}else {
$i = $year.$mon.$day.$rowC;
}
$sql = "INSERT INTO jio(iu,i, d, ya, is, qs,to,ra,wto,wi,wk,)VALUES('0',".$i."','".$d."','".$em."','".$one."', '-1','".$to."','0','0','0','0')";
$r = mysqli_query($conn, $sql);
$rows=mysqli_affected_rows($conn);
$result = array();
if($rows>0) {
array_push($result,array(
'success'=>true,
'i' => $i,
'd' =>$d
));
}
else
array_push($result,array(
'success'=>false
));
echo json_encode($result);
mysqli_close($conn);
?>
答案 0 :(得分:0)
根据您所描述的“问题”,我猜您的代码中的所有语法错误都来自将代码移植到此处。
似乎 - 如果我理解正确 - 你唯一的问题就是你的SQL中缺少'
:
// here
$sql = "INSERT INTO jio(iu,i, d, ya, is, qs,to,ra,wto,wi,wk,)VALUES('0',".$i."','".$d."','".$em."','".$one."', '-1','".$to."','0','0','0','0')";
这会导致$rows
为假(因为mysqli错误),所以你的if'将'success'设置为false。
更正的sql将是
$sql = "INSERT INTO jio(iu,i, d, ya, is, qs,to,ra,wto,wi,wk,)VALUES('0','".$i."','".$d."','".$em."','".$one."', '-1','".$to."','0','0','0','0')";
// this is the critical part:
// ...,'".$i."',...
注意的
您最好切换到prepared statements,因为您可以sql-injection开放。
此外,如果您的查询成功或有任何错误,请先检查一下。
$r = mysqli_query($conn, $sql);
if($r) {
// work with the result
} else {
// an error occurred. Show it, handle it, whatever.
echo mysqli_error($conn);
}
此外,您不需要在php中array_push
。使用该语法要容易得多:
$result = array();
if($rows>0) {
$result[] = array(
'success'=>true,
'i' => $i,
'd' =>$d
);
}
else { // don't forget these brackets here!
$result[] = array(
'success'=>false
);
} // and here
最后:您不需要在脚本结束时关闭mysqli连接,因为无论如何它都会终止。