【问题标题】:php variable in sql querysql查询中的php变量
【发布时间】:2012-04-12 16:23:24
【问题描述】:

我有这个:

$result = mysql_query("SELECT * FROM animals WHERE hand= " .$_SESSION['SESS_HAND']. ");

但总是显示“Parse error: parse error, expecting T_STRING' orT_VARIABLE' or `T_NUM_STRING”

【问题讨论】:

  • 您是否意识到在字符串末尾的); 之前有一个"?让它逃脱它。

标签: php sql variables


【解决方案1】:

总是转义字符串变量:

$result = mysql_query("SELECT * FROM animals WHERE hand= '" .
mysql_real_escape_string($_SESSION['SESS_HAND']). "'");

【讨论】:

    【解决方案2】:

    您的查询不起作用的原因是因为您的 WHERE 值不在单引号之间。

    编辑:昆汀也是对的,你没有关闭最后一个括号的引号;)。

    这将使查询工作:

    $result = mysql_query("SELECT * FROM animals WHERE hand= '" .$_SESSION['SESS_HAND']. "'");
    

    但就像 a1ex07 指出的那样,您应该始终转义变量!上面的查询容易受到 MySQL 注入的影响。下面的示例通过转义变量显示了正确的方法,在我看来是更好的可读代码;)。

    $query = "SELECT * FROM `animals` 
    WHERE `hand` = '" .mysql_real_escape_string($_SESSION['SESS_HAND']). "'";
    
    mysql_query($query);
    

    【讨论】:

      【解决方案3】:

      尝试:

      $result = "SELECT * FROM animals WHERE hand= " . $_SESSION['SESS_HAND'];
      
      mysql_query($result);
      

      此外,通过这样做,您可以调试您的查询,并通过编写以下代码查看它在 SQL 中的确切作用:

      echo $result;
      

      【讨论】:

        【解决方案4】:

        它给出了该错误消息,因为您从未完成尝试在会话数据之后附加的字符串:");。

        不要通过将字符串混合在一起来构建 SQL 查询。 Use prepared statements and parameterized queries.

        【讨论】:

          【解决方案5】:

          问题:

          $result = mysql_query("SELECT * FROM animals WHERE hand= " .$_SESSION['SESS_HAND']. ");
          

          解决方案:

          if (!$sessHand = mysql_real_escape_string($_SESSION['SESS_HAND']))
          { 
          echo "There was a error: " . mysql_error();
          }
          else
          { $result = mysql_query("SELECT * FROM animals WHERE hand=$sessHand") }
          

          【讨论】:

          • 这是什么状态信息?
          • 欢迎来到 SO slipfeed!请尽量在这里使用“成熟的语言”!
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-02-23
          • 1970-01-01
          • 2019-02-16
          相关资源
          最近更新 更多