如果该文本包含一些符号(",?,脚本或某些sql标记),我在从我的网站添加一些文本时遇到问题。
这里有一些代码,希望这就够了:)
if(isset($_POST['submit_achievement'])){
$title = $_POST['title_field'];
$description = $_POST['description_field'];
$sql2 = 'INSERT INTO achievements (title,description) VALUES (' . '"' .$title . '"'. "," . '"' . $description . '"' . ')';
$records2 = mysqli_query($conn,$sql2);
}
如果您需要我的代码中的更多行,请写一下,非常感谢! :)
答案 0 :(得分:1)
这里的问题是你没有使用预准备语句,而且你没有正确地转义,所以有些符号与SQL冲突。一般而言,这意味着您很容易受到SQL injection bugs的攻击。</ p>
切换为使用parameterized queries和bind_param
来解决此问题:
$stmt = mysqli_prepare($conn, "INSERT INTO achievements (title, description) VALUES (?,?)");
$stmt->bind_param("ss", $_POST['title_field'], $_POST['description_field']);
作为一个注释,尽量避免在_field
之类的名称中添加多余的内容。如果在表单提交中,它被认为是一个字段。