使用PHP脚本写入在线SQL数据库

时间:2016-03-26 10:24:16

标签: php mysql sql mysqli

我需要将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);

?>              

3 个答案:

答案 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)
}