This question already has answers here:
How can I prevent SQL injection in PHP?
                                
                                    (28个答案)
                                
                        
                                3个月前关闭。
            
                    
我目前正在测试一个html表单,该表单通过php将数据发送到sql数据库。我面临的问题是特殊字符会破坏表格并且不更新数据库。我尚未测试所有特殊字符,但主要是`'是罪魁祸首。我试过mysql_escape_string,preg_replace和add_slashes没有成功。我想念什么?

$description = preg_replace('/[^A-Za-z0-9\ %&$=+*?()!.-]/', ' ', $_POST['description']);
$description = preg_replace("/[\n\r]/"," ",$description);

// Items Insert
foreach ($item as $index=>$value) {
$sqlItems .= "
    INSERT INTO quote_items (quote_id, item, description, amount, gst)
    VALUES ('$last_id', '$item[$index]', '$description[$index]', '$amount[$index]', '$gst[$index]');
";
}


提前致谢!

最佳答案

您可以尝试一下(有点脏),但是应该允许保存这2个字符

$sqlItems .= '
    INSERT INTO `quote_items` (quote_id, item, description, amount, gst)
    VALUES ("'.$last_id.'", "'.$item[$index].'", "'.$description[$index].'", "'.$amount[$index].'", "'.$gst[$index].'");
';


编辑:对不起,引号反转了

关于php - 使用PHP为SQL数据库准备HTML表单输入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40118678/

10-17 01:30