【问题标题】:Sql Query LIKE not workingSql 查询 LIKE 不起作用
【发布时间】:2013-02-03 06:11:42
【问题描述】:

您好,我试图做一个查询,它接收查询字符串上的值,但没有工作我认为它本身的查询不好。你能帮帮我吗?

所以我收到了查询

<%String detalhe = request.getParameter("value");%>

我不会放置连接和东西,因为它们与其他查询一起使用,所以问题不在于连接。

// sql query to retrieve values from the specified table. 

String QueryString = "SELECT * FROM ebooko.dadoslivros WHERE Autor LIKE '%"+detalhe+"%'

OR ano LIKE '%"+detalhe+"%'";;
rs = statement.executeQuery(QueryString);

它根本无法检索值,我正在查询。

Adicional 信息: 表:dadoslivros 我需要比较值的列:Autor,ano。

例如,当我运行 Href 时,传递的值是:Jules%Verne(我猜它会用 '%' 更改空格。

【问题讨论】:

  • 很好SQL injection hole。享受您的服务器 pwn3d。
  • 如果您使用硬编码的字符串"Jules%Verne",查询是否有效?我可以想象,% 在通过浏览器到达您的服务器的途中被转换为%25
  • 马克,因为这是一项学校作业,我们才刚刚开始学习这种安全性不是我熟悉的东西,仍然很高兴知道这一点,我会改变它.

标签: mysql jsp jsp-tags


【解决方案1】:

我通过更改查询解决了它:

String QueryString = "SELECT * FROM dadoslivros WHERE (Data LIKE '%"+detalhe+"%') OR (Autor LIKE '%"+detalhe+"%')";;

也许它可以帮助另一个人;)

【讨论】:

    【解决方案2】:

    使用URLDecoder#decode()解码查询字符串中的参数。

    您还应该考虑使用PreparedStatement 来防止SQL injection 攻击。

    【讨论】:

    • 我看到了你给我的链接,但我看不懂,还是谢谢你;)
    猜你喜欢
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    • 2013-10-10
    • 2010-10-04
    • 2022-01-03
    • 1970-01-01
    • 2015-02-26
    • 2011-10-02
    相关资源
    最近更新 更多