我写了一个查询
mysql_query("insert into db_manufacturer(mfgName) values('$manufacturer')"
当$manufacturer = ram's
或sam's
等出现sql
错误时,如何克服此错误。如果我使用""
,那么在数据库中插入变量而不是变量值。
答案 0 :(得分:2)
mysql_query("insert into db_manufacturer(mfgName) values('$manufacturer')")
当$manufacturer
为"ram's"
时,它就像
mysql_query("insert into db_manufacturer(mfgName) values('ram's')")
当关闭分隔符值出现两次时,它会被破坏;也就是说,单引号有奇数。
现在解决方案
mysql_query("
INSERT INTO db_manufacturer
(mfgName)
VALUES
('".mysql_real_escape_string($manufacturer)."')
");
一种优秀,简单,可扩展且安全的方法是使用参数化查询。此类查询的参数称为绑定变量。
好读
ext/mysql
PHP扩展程序(提供名为mysql_的所有函数)为officially deprecated as of PHP v5.5.0,将来会被删除。因此,请使用PDO
或MySQLi
好读
答案 1 :(得分:1)
$manufacturer = mysql_real_escape_string($manufacturer);
mysql_query("insert into db_manufacturer(mfgName) values('$manufacturer')";
答案 2 :(得分:1)
$manufacturer = mysql_real_escape_string($manufacturer);
mysql_query("insert into db_manufacturer(mfgName) values('$manufacturer')"
但我建议使用PDO或MySQLI。
这是一篇很棒的文章:
答案 3 :(得分:0)
使用mysql_real_escape_string
转义字符串中的特殊字符以用于SQL语句
$manufacturer = mysql_real_escape_string($manufacturer);
更多详情:
http://php.net/manual/en/function.mysql-real-escape-string.php
答案 4 :(得分:0)
已弃用,但您正在寻找mysql_real_escape_string
。
但忘了mysql_
并学习PDO,它更安全。