我写了一个查询
mysql_query("insert into db_manufacturer(mfgName) values('$manufacturer')"
何时$manufacturer = ram's
或sam's
等然后它给出sql
错误,如何克服这个错误。如果我使用""
then 在数据库中插入变量而不是变量值。
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_ 为前缀的函数,从 PHP v5.5.0 开始正式弃用,并将在未来删除。所以使用PDO
或者MySQLi
好读
$manufacturer = mysql_real_escape_string($manufacturer);
mysql_query("insert into db_manufacturer(mfgName) values('$manufacturer')";
$manufacturer = mysql_real_escape_string($manufacturer);
mysql_query("insert into db_manufacturer(mfgName) values('$manufacturer')"
但我建议使用 PDO 或 MySQLI。
这是一篇很棒的文章:
使用mysql_real_escape_string
which 转义字符串中的特殊字符以用于 SQL 语句
$manufacturer = mysql_real_escape_string($manufacturer);
更多细节:
http://php.net/manual/en/function.mysql-real-escape-string.php
它已被弃用,但您正在寻找mysql_real_escape_string
.
但是忘记mysql_
并学习PDO,它更安全。