【问题标题】:MySQL select statement not returning rowsMySQL select语句不返回行
【发布时间】:2012-12-05 13:12:59
【问题描述】:

我在 PHP 中使用了一个简单的 SELECT 语句:

$vote=mysql_query("SELECT * FROM `votes` where username = '$big_hand_username' AND 
`voter` = '$user_name'");

使用此语句时,我没有返回任何行。我应该返回 1 行。我在投票表中只有一行,它包含与变量 $big_hand_username 匹配的用户名字段。 $big_hand_username 和 $user_name 都包含数据,我已经将它们回显以确保。

但是,当我从投票表中选择所有内容时,我会返回 1 行,这是您所期望的。我也可以使用相同的变量从另一个表中全选:

$vote=mysql_query("SELECT * FROM `users` where username = '$big_hand_username'");

这将返回 1 行,这是您所期望的,因为它包含包含匹配字段用户名的行。

我只是不明白为什么我不能使用第一个 select 语句从 votes 表中返回一行。我错过了什么吗?这可能与桌子的构造有关吗?我还尝试在 select 语句之后运行 while 循环,但看不到任何错误。任何指针都会有所帮助。

【问题讨论】:

  • 您是否尝试将查询本身输出并手动运行?
  • 回显查询并将该查询直接运行到 mysql
  • 再次检查您的变量是否符合您的预期,同时回显整个(包括生成的变量)SQL 查询并尝试在 phpMyAdmin(或类似的)中运行它。
  • 已尝试使用 print_r($vote);查看 SQL 语句的样子,还尝试了 echo $vote;但只是返回资源 id#8。

标签: php mysql


【解决方案1】:

试试这个

$vote=mysql_query("SELECT * FROM `votes` where username = '".$big_hand_username."' AND 
voter = '".$user_name."'");

【讨论】:

    【解决方案2】:

    试试这个

    $vote = mysql_query("
                SELECT * FROM votes 
                WHERE username = '{$big_hand_username}' 
                AND voter = '{$user_name}'
            ");
    

    【讨论】:

      【解决方案3】:

      试试下面的线

      $sql="
              SELECT * FROM votes 
              WHERE username = '{$big_hand_username}' 
              AND voter = '{$user_name}'
          ";
      echo $sql; // for debuging also user_name,big_hand_username check
      // for preventing sql-injection
      $vote=mysql_query($sql);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多