插入表格时不能使用符号(php / sql)

时间:2016-11-25 21:56:46

标签: php mysql

如果该文本包含一些符号(",?,脚本或某些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);
}

如果您需要我的代码中的更多行,请写一下,非常感谢! :)

1 个答案:

答案 0 :(得分:1)

这里的问题是你没有使用预准备语句,而且你没有正确地转义,所以有些符号与SQL冲突。一般而言,这意味着您很容易受到SQL injection bugs的攻击。<​​/ p>

切换为使用parameterized queriesbind_param来解决此问题:

$stmt = mysqli_prepare($conn, "INSERT INTO achievements (title, description) VALUES (?,?)");

$stmt->bind_param("ss", $_POST['title_field'], $_POST['description_field']);

作为一个注释,尽量避免在_field之类的名称中添加多余的内容。如果在表单提交中,它被认为是一个字段。