【问题标题】:bindValue does not escapebindValue 不会转义
【发布时间】:2011-04-03 02:34:35
【问题描述】:

我在 php.net 上看到了一条评论:

虽然bindValue() 会转义引号,但不会转义“%”和“_”,所以在使用LIKE 时要小心。如果您不自己转义参数,则充满 %%% 的恶意参数可以转储您的整个数据库。 PDO 没有提供任何其他转义方法来处理它。

那么它真的没有逃脱 % 和 _ 吗?最好的解决方案是什么?

【问题讨论】:

    标签: php pdo bindvalue


    【解决方案1】:

    正如评论所说,这实际上只是LIKE 查询的问题。

    如何转义这些值取决于您的数据库。如果正常的反斜杠转义有效(如在 MySQL 中),则使用:

    $like = addcslashes($like, "%_");
    

    或者,最好是偷懒,把那些元字符去掉:

    $like = strtr($like, "%_", "  ");
    

    【讨论】:

      猜你喜欢
      • 2013-01-20
      • 2012-01-16
      • 2011-07-27
      • 1970-01-01
      • 2015-06-23
      • 2013-01-03
      • 2011-02-11
      • 2013-01-17
      相关资源
      最近更新 更多