Php SQL查询因撇号而中断
我使用html解析器从第三方站点抓取数据,然后将所需信息插入MySQL。碰巧很多信息中都包含撇号。问题在于,对于SQL查询,如下所示:Php SQL查询因撇号而中断,php,sql,sql-injection,Php,Sql,Sql Injection,我使用html解析器从第三方站点抓取数据,然后将所需信息插入MySQL。碰巧很多信息中都包含撇号。问题在于,对于SQL查询,如下所示: INSERT INTO table (column) VALUE ('".$value."') 如果$variable中有撇号,则查询中断。有太多的信息,我手动插入它所有。这完全太耗时了。有什么建议可以让这个查询工作吗?这是一个典型的SQL注入缺陷。如果$value的值由用户控制,那么他们现在基本上可以做任何事情。刮取字符串中的引号脱离SQL字符串中的引号环境
INSERT INTO table (column) VALUE ('".$value."')
如果
$variable
中有撇号,则查询中断。有太多的信息,我手动插入它所有。这完全太耗时了。有什么建议可以让这个查询工作吗?这是一个典型的SQL注入缺陷。如果$value
的值由用户控制,那么他们现在基本上可以做任何事情。刮取字符串中的引号脱离SQL字符串中的引号环境,因此允许执行任意SQL命令
简而言之,使用mysql\u real\u escape\u string
当然,这其中也有一个强制性的“mysql不推荐使用,请使用mysqli或PDO”部分。这是一个典型的SQL注入缺陷。如果
$value
的值由用户控制,那么他们现在基本上可以做任何事情。刮取字符串中的引号脱离SQL字符串中的引号环境,因此允许执行任意SQL命令
简而言之,使用mysql\u real\u escape\u string
当然,其中也有强制性的“mysql不推荐使用,请使用mysqli或PDO”部分。因此,换言之,您的查询在
SQL注入时易受攻击。最好使用PDO
或MySQLi
扩展,因为您标记了`PHP
花点时间阅读这篇文章:因此,换句话说,您的查询在SQL注入中容易受到攻击。最好使用PDO
或MySQLi
扩展,因为您标记了`PHP
花点时间阅读这篇文章:如果数据有,会发生什么;将表--
放入其中?插入表(列)值(“.mysql\u real\u escape\u string($VALUE)。”)
但更好的方法是使用PDO
或mysqli
而不是mysql
。准备好的语句答案在哪里?!?如果数据有”,会发生什么;将表--
放入其中?插入表(列)值(“.mysql\u real\u escape\u string($VALUE)。”)
但更好的方法是使用PDO
或mysqli
而不是mysql
。准备好的语句答案在哪里?!?很抱歉我是个笨蛋。但是,什么是PDO?我知道sql注入,但当我的站点的用户正在使用我的站点时,我只在mysql\u real\u escape\u string()中包装查询中使用的内容的值。显然,我不会做对我自己不利的事。。特别是查看准备
和执行
部分。它允许您使用占位符构建查询,然后在执行查询时将这些占位符绑定到值。因为他们是这样做的,所以SQL注入并没有成为一个问题。非常感谢。我会调查的。这会增加执行时间吗?呃,也许吧?无论如何,这并不重要。如果你担心执行时间,我必须问你为什么要使用PHP…呃。不特别关心执行时间。只是想知道,对不起。我是个笨蛋。但是,什么是PDO?我知道sql注入,但当我的站点的用户正在使用我的站点时,我只在mysql\u real\u escape\u string()中包装查询中使用的内容的值。显然,我不会做对我自己不利的事。。特别是查看准备
和执行
部分。它允许您使用占位符构建查询,然后在执行查询时将这些占位符绑定到值。因为他们是这样做的,所以SQL注入并没有成为一个问题。非常感谢。我会调查的。这会增加执行时间吗?呃,也许吧?无论如何,这并不重要。如果你担心执行时间,我必须问你为什么要使用PHP…呃。不特别关心执行时间。只是想知道。