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."')");