php insert语句具有正确的参数,但insert返回false

php insert语句具有正确的参数,但insert返回false,php,mysql,sql-insert,Php,Mysql,Sql Insert,好的,我的插入应该很好,但返回的是false,$quote保留我检查过的值。我的数据库是希望另一双眼睛能发现这一点。我对其他php文件使用了相同的插入样式,效果很好。但是这个很棘手…是因为外键吗 <?php $quote = $_POST["quote"]; require "init.php"; $query = "INSERT INTO `quote`(`quote_description`) VALUES('".$quote."');"; $result = mysqli

好的,我的插入应该很好,但返回的是false,$quote保留我检查过的值。我的数据库是希望另一双眼睛能发现这一点。我对其他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);

?>

在MySQL中使用INSERT时,必须包含要插入的所有列和值。试试这个

$query = "INSERT INTO quote(quote_id, quote_description, quote_points, user_id, Quote_of_day_id) VALUES(NULL, '".$quote."', '".$points."', '".$user_id."', '".$qod_id."');";
如果您没有在这个查询中插入所有的值,只需将它们设置为nothing。要在以后添加值,请使用“更新”:

$query = "UPDATE quote SET user_id = 8 WHERE quote_id = 6";
虽然这是一种插入的解决方案,但它不安全,容易受到攻击。下面是一个更好的、更安全的面向对象解决方案,我建议您将其用于任何其他不安全的插入:

$db = new mysqli($host, $user, $pass, $database);
$stmt = $db->prepare('INSERT INTO quote(quote_id, quote_description, quote_points, user_id, Quote_of_day_id) VALUES(?, ?, ?, ?, ?);');
$stmt->bind_param('isiii', $quote_id, $quote, $points, $user_id, $qod_id);

$stmt->execute();
此外,最好添加以下内容来处理您的帖子数据:

if(!isset($_POST["quote"])) {
    echo "Data not received correctly";
    exit();
}

希望这些例子对你有所帮助。祝您万事如意。

查阅以下链接,并将其应用于您的代码;你没那么做。此外,这里还有一些未知数;如果POST数组包含一个值,并且MySQL API用于连接。如果
$quote
包含一个quote
,您将自己进行sql注入。您应该使用准备好的语句。
$con
未定义,不是吗?^。。。为了得到真正的错误,为什么你在这里失败了。使用预先准备好的语句可能会起作用,但它不会告诉您原始代码失败和仍然失败的原因。
$stmt->execute()
=>
如果(!$stmt->execute()){trigger\u error(“有一个错误…”“$con->error,E\u USER\u WARNING);}
我将进一步研究您的示例,事实上这是非常有帮助的。谢谢:)很乐意帮忙。谢谢@Bowiechang,我成功了。谢谢你,伙计,还有你们其他人。对不起,如果我看起来有点初学者,我是。新的编码以及堆栈溢出。希望继续与大家合作!干杯