$message); echo json_encode($err); } -6ren">
gpt4 book ai didi

php - 尝试从数据库检索数据时出现 JSONException

转载 作者:行者123 更新时间:2023-11-29 18:55:13 26 4
gpt4 key购买 nike

我正在尝试从数据库中检索数据。我向此 PHP 文件发送请求:

<?php

require "init.php";

$qrcode = $_POST["qrcode"];

$sql = "select * from cespite where QrCode = $qrcode;";

$result = mysqli_query($con, $sql);

if(mysqli_num_rows($result)==0)
{
$code = "reg_failed";
$message = "Nessun risultato trovato!";

$err = array("code"=>$code, "message"=>$message);
echo json_encode($err);
}
else
{
$row = $result->fetch_all(MYSQLI_ASSOC)[0];
echo json_encode($row);
}

//$mysqli_close($con);

?>

这是我向该文件发送请求的代码:

final JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response)
{
try
{
Nome.setText(response.getString("Nome"));
Descrizione.setText(response.getString("Descrizione"));
Numinventario.setText(response.getString("NumInventario"));
Foto.setText(response.getString("Foto"));
Dtcatalogazione.setText(response.getString("DtCatalogazione"));
}
catch (JSONException e)
{
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
int j = 21;
}
})
{
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<>(1);
params.put("qrcode", richiesta);

return params;
}
};

RegisterRequest.getmInstance(this).addToRequestque(request);

这是我的RegisterRequest类:

public class RegisterRequest
{
private static RegisterRequest mInstance;
private RequestQueue requestQueue;
private static Context mCtx;
//default constructor
private RegisterRequest(Context context)
{
mCtx=context;
requestQueue=getRequestQueue();
}

public RequestQueue getRequestQueue()
{
if(requestQueue==null)
{
requestQueue = Volley.newRequestQueue(mCtx);
}
return requestQueue;
}

public static synchronized RegisterRequest getmInstance(Context context)
{
if(mInstance==null)
{
mInstance = new RegisterRequest(context);
}
return mInstance;
}

public void addToRequestque(Request request)
{
requestQueue.add(request);
}

}

我已经尝试过使用我的调试器。我总是以 onErrorResponse 完成方法,我不明白为什么,因为我尝试从网络发送请求到我的 PHP 文件并且它工作正常,所以我认为这可能是发送参数到请求的问题。我得到的错误是 Value <br of type java.lang.String cannot be converted to JSONObject .

有什么解决办法吗?

提前致谢!

编辑:解决了发出字符串请求而不是 jsonobject 请求的问题

最佳答案

您的 PHP 脚本中发生错误,导致输出如下所示:

ERROR AT LINE X: INFORMATION ABOUT THE ERROR

{"code": "code", "message": "Something went wrong"}

这会导致整体输出为无效 JSON(因为第一个错误行不是 JSON)。这会导致您收到 JSON 异常。尝试验证您的 PHP 脚本是否正常工作,例如使用标准文本请求而不是 JSONRequest 进行联系。这样您应该可以看到发生的 PHP 错误。您还可以尝试查看服务器日志,看看其中是否有任何有用的信息。

另外一点,您的 PHP 脚本很容易受到 SQL 注入(inject)攻击。尝试看看如果将 $_POST['qrcode'] 的值替换为引号(例如: ' ),会发生什么情况。这样,有恶意的人就可以获取您的整个数据库。您可以使用准备好的语句来解决此问题。

关于php - 尝试从数据库检索数据时出现 JSONException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44177213/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com