Php POST数据未插入sql表

Php POST数据未插入sql表,php,html,mysql,Php,Html,Mysql,我用的是表格。(我希望将消息文本作为文本区域,但将其改回普通文本,以查看这是否是问题所在) 这是我正在使用的表单 <form name="addmessage" method="POST" action="addmessage.php" > <input type="text" name="message_title" id="message_title">Message Title</input> <input type="text"

我用的是表格。(我希望将消息文本作为文本区域,但将其改回普通文本,以查看这是否是问题所在)

这是我正在使用的表单

<form name="addmessage" method="POST" action="addmessage.php" >
    <input type="text" name="message_title" id="message_title">Message Title</input>
    <input type="text" name="message_text" id="message_text">Message</input>
    <input type="submit" name="submit" value = Add> 
  </form>

消息标题
消息
下面是PHP代码。我知道我需要防止sql注入,但我可以稍后再做

    <?php
include_once("config.php");
if(isset($_POST["message_title"]) && strlen($_POST["message_title"])>0) 
    {
$message_title=$_POST['message_title'];
$message_text=$_POST['message_text'];
session_start();
$barber_id = $_SESSION['barber_id'];

$insert_row = $mysqli->query("INSERT INTO messages(barber_id,message_title,message_text) VALUES('".$barber_id."','".$message_title."',".$message_text.")");

}
else

{
    //Output error
    header('HTTP/1.1 500 Error You have left it blank');
    exit();
}

header("location:messages.php");
?>  

$insert_row=$mysqli->query(“插入到消息(理发师id、消息标题、消息文本)中)值(“$barber_id.”、“$message_title.”、“$message_text.”)

你应该写

$insert_row = $mysqli->query("INSERT INTO messages(barber_id,message_title,message_text) VALUES('".$barber_id."','".$message_title."','".$message_text."')");

每次你传递一个字符串或其他非int值时,你必须像这样传递它们:“xx”,否则mysql会将其视为查询参数,它会崩溃。

我可以看到你在哪里做了更改,但准确显示你做了什么并解释原因,这将有助于OP包括未来的读者。
$message\u text
不会在SQL字符串中引用。除了有助于防止SQL注入之外,正如您在问题中提到的,使用预处理语句而不是以这种方式构建SQL的另一个很好的理由是,您不必担心这种事情。请在查询中使用。它将帮助你发现代码中的错误。嗨,你所说的准备语句是什么意思?
$insert_row = $mysqli->query("INSERT INTO messages(barber_id,message_title,message_text) VALUES('".$barber_id."','".$message_title."','".$message_text."')");