你如何从PHP中输入特殊字符到MySQL?

时间:2012-04-25 18:47:40

标签: php mysql

实际上,我尝试做的是输入类似于此字符串的字符串 进入MySQL(这是一行,为了便于阅读,分成两行)

fill:#0000ff;fill-rule:evenodd;stroke:#000000;stroke-width:1px;
stroke-linecap:butt;stroke-  linejoin:miter;stroke-opacity:1

MySQL允许我使用phpMyAdmin将字符串插入到字段中,并且phpMyAdmin将字段添加为(再一行,为了便于阅读,将其分为两行):

('fill:#0000ff;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-
linecap:butt;stroke-linejoin:miter;stroke-opacity:1'' in ''field list')

使用我的PHP代码,我尝试将字段列表部分添加到我的代码中,如下所示

$rectangle_array[$rstyle] = $rectangle_array[$rstyle] . "' in ''field list'";
$mysql_rectangle_table_entry = "INSERT INTO $mysql_table VALUES
                               ($rectangle_array[$rstyle], 'rect',
                               $rectangle_array[$rid], $rectangle_array[$rwidth],
                               $rectangle_array[$rheight], $rectangle_array[$rx],
                               $rectangle_array[$ry])";
$run = mysql_query($mysql_rectangle_table_entry) or die(mysql_error());

运行代码后,我收到以下错误。

  

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在':#0000ff附近使用正确的语法; fill-rule:evenodd; stroke:#000000; stroke-width:1px; stroke-linecap:butt; s'在第1行

我可以做些什么来完成这项工作?

2 个答案:

答案 0 :(得分:2)

如评论中所述......

您可以在插入之前使用mysql_real_escape_string()来转义任何MySQL特殊字符。

例如:

$sql = "INSERT INTO my_table (string_column) VALUES ('" . mysql_real_escape_string($string) .  "')";

另一种选择是将Prepared Statements与PHP的MySQLiPDO一起使用。

答案 1 :(得分:1)

您可能希望查看prepared statementsmysql_real_escape_string以转义可能会破坏您的INSERT的特殊字符。