我需要将android中的数据保存到在线SQL数据库中。我做了一个PHP文件来完成任务。我试图在PHP文件中使用GET保存数据,但它总是返回false。请看看我的代码,请帮忙。使用Android应用程序调用该文件。尝试通过浏览器的REST附加组件进行测试。
编辑:问题 - 当我使用HTTP GET发送数据时,我得到的全部是JSON结果{“result”:false}。这意味着我的SQL查询无法正常运行。我尝试直接在phpMyAdmin中运行相同的代码并且它可以工作。
编辑:代码更正。
<?php
$con = new mysqli("HOST","USERNAME","PASSWORD","DATABASE");
$rrequest_status = $_GET['request_status'];
$rstudent_name = $_GET['student_name'];
$rrequest_to = $_GET['request_to'];
$renrollment_no = $_GET['enrollment_no'];
$rout_date = $_GET['out_date'];
$rout_time = $_GET['out_time'];
$rin_date = $_GET['in_date'];
$rin_time = $_GET['in_time'];
$rrequest_time = $_GET['request_time'];
$rapproved_time = $_GET['approved_time'];
$rvisit_place = $_GET['visit_place'];
$rvisit_type = $_GET['visit_type'];
$rcontact_number = $_GET['contact_number'];
$squery = "INSERT INTO `gatepass_requests` (
`gatepass_number` ,
`request_status` ,
`student_name` ,
`request_to` ,
`enrollment_no` ,
`out_date` ,
`out_time` ,
`in_date` ,
`in_time` ,
`request_time` ,
`approved_time` ,
`approved_by` ,
`visit_place` ,
`visit_type` ,
`contact_number`
)
VALUES (
NULL ,
'".$rrequest_status."',
'".$rstudent_name."',
'".$rrequest_to."',
'".$renrollment_no."',
'".$rout_date."',
'".$rout_time."',
'".$rin_date."',
'".$rin_time."',
'".$rrequest_time."',
NULL,
'".$rapproved_by."',
'".$rvisit_place."',
'".$rvisit_type."',
'".$rcontact_number."',
)";
if(mysqli_query($con,$squery)){
$result['result'] = true;
}else{
$result['result'] = false;
}
echo json_encode($result);
mysqli_close($con);
?>
答案 0 :(得分:1)
为未来的读者设置记录。
这里的问题是你的VALUES中使用了以下不同/未定义的变量:
$rrequest_status
$rrequest_to
$rrequest_time
但是已经将它们声明为,并且使用额外的“r”并假设这是您的真实代码,而不仅仅是您问题中的错误粘贴:
旁注:假设GET请求而不是POST。
$request_status = $_GET['request_status'];
$request_to = $_GET['request_to'];
$request_time = $_GET['request_time'];
错误报告可能会发出未定义的变量通知,但未提及。
然后你在给出的答案中陈述了这个评论:
“非常感谢您的回复,我暂时删除了它,但这不是问题.PHP允许使用尾随逗号,所以无所谓。 - Pradumn Kumar Mahanta”< / em>的
也许对于某些PHP操作,但我们在这里处理MySQL而且仅此一项就会引发关于尾随逗号的异常:
'".$rcontact_number."',
&lt;&lt;&lt; 关于您对SQL injection开放的问题,请使用预先准备好的声明:
参考文献:
检查引用时出错:
答案 1 :(得分:0)
正如您使用$con = new mysqli("HOST","USERNAME","PASSWORD","DATABASE");
。所以你遵循面向对象的风格。因此,您需要按照面向对象的样式来执行查询。现在你混合了面向对象的风格&amp; 程序风格
更改
if(mysqli_query($con,$squery)){
$result['result'] = true;
}else{
$result['result'] = false;
}
要
if($con->query($squery)){
$result['result'] = true;
}else{
$result['result'] = false;
}
如需了解更多信息,请查看Object Oriented Style & Procedural Style
答案 2 :(得分:0)
从插入查询中删除额外的,
。
'".$rcontact_number."', <-- this one
要检查出现了什么错误,请执行以下操作:
if(mysqli_query($con,$squery)) {
$result['result'] = true;
} else {
$result['result'] = mysqli_error($con); // instead of false, use mysqli_error($con)
}