【发布时间】:2016-05-09 13:34:31
【问题描述】:
好的,所以我的插入应该没问题,但返回错误,$quote 持有我检查过的值。我的数据库是here希望另一双眼睛能发现这一点。我一直在为其他 php 文件使用相同的插入样式,效果很好。但是这个很棘手......因为外键而错过了?
<?php
$quote = $_POST["quote"];
require "init.php";
$query = "INSERT INTO `quote`(`quote_description`) VALUES('".$quote."');";
$result = mysqli_query($con,$query);
//"INSERT INTO `quote`(`quote_description`) VALUES ('".$quote."');";
if($result)
{
$response = array();
$code = "submit_true";
$message = "Quote success, Click Ok to continue";
array_push($response,array("code"=>$code,"message"=>$message));
echo json_encode(array("server_response"=>$response));
}
else{
$response = array();
$code = "submit_false";
$message = "Sorry, some server error occurred, please try again";
array_push($response,array("code"=>$code,"message"=>$message));
echo json_encode(array("server_response"=>$response));
}
mysqli_close($con);
?>
检查错误后出现以下错误:
无法添加或更新子行:外键约束失败(mydb.quote, CONSTRAINT fk_quote_user FOREIGN KEY (user_id) REFERENCES user (user_id) ON DELETE NO ACTION ON UPDATE NO ACTION)
【问题讨论】:
-
请查阅以下链接 php.net/manual/en/mysqli.error.php 和 php.net/manual/en/function.error-reporting.php 并将其应用于您的代码;你没有那样做。另外,这里有一些未知数;如果 POST 数组包含一个值和用于连接的 MySQL API。
-
如果
$quote包含例如引用',您将自己注入sql。您应该改用准备好的语句。 -
$con未定义,不是吗? -
^ ... No.... you need to refer to comment #1... 得到 real 错误,说明为什么它在这里失败了。使用准备好的语句可能会起作用,但它不会告诉你为什么你的原始代码会失败并且可能仍然会让你失败。
-
$stmt->execute()=>if(!$stmt->execute()){trigger_error("there was an error....".$con->error, E_USER_WARNING);}和<?php error_reporting(E_ALL); ini_set('display_errors', 1); // rest of code
标签: php mysql sql-insert