好的,我有一个表单和php文件,将表单数据发送到MYSQL。 我知道我的SQL命令将撇号解释为结束语法或其他东西,不会插入它们。 但是我有一个替换所有撇号的字符串。这似乎有效,直到我将变量插入html并尝试再次插入它们。 见下文
$c1=$_POST['c1'];
$c1a=str_replace("'", "''", "$c1");
$report= '
<html>
<body>
<p align=\”left\”><strong>Comments:</strong></p>
<p align=\”left\”>
'.$c1a.'
<br>
</p></td><html> ';
当我尝试将$ report插入我的sql时,它不会让它继续下去,就好像字符串替换从未发生过一样。但我知道这样做是因为当我回复$ report来测试它时,所有的撇号都会被替换掉。发生了什么事!
此外,我已多次测试,当我的表单数据不包含撇号时,插入工作正常。
答案 0 :(得分:0)
您必须在单引号前添加反斜杠。你可以使用函数mysql_real_escape_string()(或mysqli_real_escape_string())来做到这一点。