【问题标题】:mysql query works with plain text, but not with variablemysql查询适用于纯文本,但不适用于变量
【发布时间】:2012-12-27 16:44:16
【问题描述】:

我正在尝试打印一些主题信息,但效果并不好。这是我的查询:

SELECT * FROM topics WHERE id='$read'

这不起作用。我已经回显了$read 变量,它说1。那么,如果我这样做:

SELECT * FROM topics WHERE id='1'

完美运行。我不明白有什么问题。 $read 或其他类似内容中没有隐藏字符。

【问题讨论】:

  • 当你说它不起作用时,究竟是什么不起作用?你有错误吗?是不是没有返回结果?
  • 错误信息是什么?
  • 不要使用echo变量进行调试,使用var_dumpecho "1 "; 将为您提供与 echo "1"; 相同的输出,您将不知道任何不可打印的字符,而 var_dump 将告诉您类型和大小(以字节为单位)。
  • @Jrod 它只是没有显示任何东西,当我执行 mysql_num_rows 时它显示 0

标签: php mysql


【解决方案1】:

试试这样:

$query = "SELECT * FROM topics WHERE id='" . $read . "'"

【讨论】:

    【解决方案2】:

    ID 通常是数字字段,应该是

    $id = 1;
    $query = "SELECT * FROM topics1 WHERE id = {id}"
    

    如果您出于某种原因使用strings,请触发类似的查询

    $id = '1';
    $query = "SELECT * FROM topics1 WHERE id = '{$id}'"
    

    【讨论】:

      【解决方案3】:
      SELECT * FROM topics WHERE id=$read
      

      如果你放 i 单引号,它认为它是字符串

      【讨论】:

        【解决方案4】:

        我想知道为什么所有参与者都没有阅读清楚地说明带有引号的查询的问题

        SELECT * FROM topics WHERE id='1'
        

        一切正常。

        至于问题本身,可能是一些错字。可能在其他一些代码中,没有直接连接到 $read 变量

        【讨论】:

          【解决方案5】:

          试试

          $query = sprintf("SELECT * FROM topics WHERE id='%s';",$read);
          

          如果需要,还记得转义变量。

          【讨论】:

            【解决方案6】:

            看起来您可能在查询生成方面遇到问题,正如其他人所指出的那样。正如 Akash 所指出的,最好先将查询构建到一个字符串中,然后将该字符串提供给 MySQL API。这使您可以轻松访问方便的调试技术。如果您仍然遇到问题,请尝试此操作。

            $id = 1;
            $query = "SELECT * FROM `topics1` WHERE `id`={$id}";
            echo ": Attempting Query -> {$query}<br />";
            
            $res = mysql_query($query, $dblink);
            if($res <= 0)
                die("The query failed!<br />" . mysql_error($dblink) . "<br />");
            
            $cnt = mysql_num_rows($res);
            if($cnt <= 0)
            {
                $query = "SELECT `id` FROM `topics1`";
                echo "No records where found?  Make sure this id exists...<br />{$query}<br /><br />";
            
                $res = mysql_query($query, $dblink);
                if($res <= 0)
                    die("The id listing query failed!<br />" . mysql_error($dblink) . "<br />");
            
                while($row = mysql_fetch_assoc($res))
                    echo "ID: " . $row['id'] . "<br />";
            }
            

            这至少可以让您在调用之间进行监控,查看您的查询实际上是什么样的,mysql 对此有何评论,如果所有其他方法都失败,请确保您要查找的 ID 确实存在。

            【讨论】:

              【解决方案7】:

              试试这个:SELECT * FROM topics WHERE id=$read

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2020-08-23
                • 2021-02-23
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2020-08-21
                • 1970-01-01
                • 2021-06-21
                相关资源
                最近更新 更多