我正在使用 html 解析器从第三方站点抓取数据,然后将我需要的信息插入 MySQL。碰巧很多信息中都包含撇号。问题是对于 SQL 查询如下:
INSERT INTO table (column) VALUE ('".$value."')
如果 中$variable
有撇号,则查询中断。我手动插入的信息太多了。这完全太耗时了。对我有什么建议可以使这个查询起作用吗?
我正在使用 html 解析器从第三方站点抓取数据,然后将我需要的信息插入 MySQL。碰巧很多信息中都包含撇号。问题是对于 SQL 查询如下:
INSERT INTO table (column) VALUE ('".$value."')
如果 中$variable
有撇号,则查询中断。我手动插入的信息太多了。这完全太耗时了。对我有什么建议可以使这个查询起作用吗?
这是一个经典的 SQL 注入缺陷。如果 的值$value
由用户控制,他们现在基本上可以做任何事情。抓取的字符串中的引号脱离了 SQL 字符串中的引号环境,因此允许执行任意 SQL 命令。
简短的回答是,使用mysql_real_escape_string
.
当然,这也是强制性的“mysql_* 已弃用,使用 mysqli 或 PDO”部分。
因此,换句话说,您的查询很容易受到SQL Injection
. 更好地使用PDO
或MySQLi
扩展,因为您标记了`PHP.
花点时间阅读这篇文章:在 PHP 中防止 SQL 注入的最佳方法?