[ASK] 我的php错误"查询失败你的SQL语法有错误;检查与您的MariaDB服务器版本对应的手册,以获得正确的语法,以便使用附近的订单(iduser,idfood,jumlah,total)VALUES(9,1,2,20000)'在第1行" 什么错了......?
myphp
<?php
$data= file_get_contents('php://input');
$array = json_decode($data, true);
require_once ('..../db_connectfood.php');
$db = new DB_CONNECT();
foreach($array as $row)
{
$idusr = $row["iduser"];
$idfd = $row["idfood"];
$jml = $row["jumlah"];
$total = $row["total"];
$result = mysql_query("INSERT INTO order (iduser, idfood, jumlah, total) VALUES ($idusr, $idfd, $jml, $total)") or die ("Failed query ".mysql_error());
}
if ($result) {
// successfully inserted into database
$response["success"] = 1;
$response["message"] = "successfully created.";
// echoing JSON response
echo json_encode($response);
} else {
// failed to insert row
$response["success"] = 0;
$response["message"] = "Oops! An error occurred.";
// echoing JSON response
echo json_encode($response);
}
?>
如何从这个php获得价值成功和消息?
iduser和idfood是外键
答案 0 :(得分:1)
order
是SQL中的保留字。最好的方法是更改表格的名称(例如,更改为orders
,复数形式)。如果这是不可能的,你可以使用反引号来逃避名称:
INSERT INTO `order` (iduser, idfood, jumlah, total)
VALUES ($idusr, $idfd, $jml, $total)
强制性评论:
在SQL语句中使用字符串操作会使代码容易受到SQL注入攻击。您应该考虑使用prepared statement代替。
答案 1 :(得分:0)
嗨,请试试这个:
$ result = mysql_query(“INSERT INTO databasename.order(iduser,idfood,jumlah,total)VALUES($ idusr,$ idfd,$ jml,$ total)”)或die(“Failed query”.mysql_error() );
order是来自mysql的命名词。
最好的问候。答案 2 :(得分:0)
order
是reserved word。
为了能够在查询中使用保留字,你必须使用反引号将其包围,如“保留字”一样(小心反引号可能看起来像单引号,但它不是)。
所以,在你的情况下改变
$result = mysql_query("INSERT INTO order (iduser, idfood, jumlah, total) VALUES ($idusr, $idfd, $jml, $total)") or die ("Failed query ".mysql_error());
到
$result = mysql_query("INSERT INTO `order` (iduser, idfood, jumlah, total) VALUES ($idusr, $idfd, $jml, $total)") or die ("Failed query ".mysql_error());
...并检查其余的表名或列名是否为保留字。
作为最好的&amp;建议使用安全实践,参数化查询/预准备语句。