代码之家  ›  专栏  ›  技术社区  ›  sam

PHP:为mysql查询传递变量,而不将其包含在“或”中

  •  2
  • sam  · 技术社区  · 16 年前

    有一个开源应用程序可以执行如下查询:

    $db->query('SELECT item FROM table WHERE something='.$something);
    

    这很好,mysql运行查询,但是如果我使用与我得到错误完全相同的方法,mysql会将其视为“something=(value of$something)”,并(正确地)抱怨(value of$something)不是一行。这些应用程序都运行在同一台服务器上,我已经对它们的代码进行了数小时的深入研究,但我无法找出原因。

    在应用中有效,但在矿山中失败。我需要用我传递的绳子做些什么吗?正确地封装变量没有问题,例如:

    $db->query('SELECT item FROM table WHERE something="'.$something.'"');
    

    4 回复  |  直到 16 年前
        1
  •  4
  •   Adam Hopkinson    16 年前

    MySQL需要包含字符串。我唯一能想到的是$something是一个整数或浮点。

        2
  •  1
  •   VolkerK    16 年前

    SELECT ... WHERE id=5
    

    但是您必须用引号将字符串文字标记为这样

    SELECT ... WHERE id='abc'
    

    看见 http://dev.mysql.com/doc/refman/5.0/en/string-syntax.html

        3
  •  0
  •   Larry K    16 年前
    1. 如果$something来自用户/浏览器,则代码不正确。这就是所谓的sql_注入错误

    2. 向我们发送准确的代码语句和sql日志,以便我们可以看到发生了什么

        4
  •  -1
  •   streetparade    16 年前

    试试这个

    $db->query('SELECT item FROM table WHERE something={$something}');
    

    推荐文章