php
  • mysql
  • sql
  • 2014-11-21 60 views 0 likes 
    0

    我手上有一个相当奇怪的错误,我无法弄清楚。我已经尝试通过将$ username的值更改为实际值来进行调试,并且它显示结果正常,我已经回显了SQL查询以查看正在传递哪些值,并且它们都是正确的,但是没有显示任何结果。奇怪的SQL错误 - 没有打印出

    任何想法?谢谢

    $sql = mysql_query("SELECT username1, username2 FROM friends WHERE username1 = '$username' OR username2 = '$username' AND friends >= 2") or die (mysql_error()); 
    while ($row = mysql_fetch_assoc($sql)) { 
         echo "<p>".$row['username1']."</p>"; 
    } 
    
    +2

    可以像'或(USERNAME2 =“$用户名”和朋友> = 2)' – 2014-11-21 16:21:34

    +2

    在mysql中有倾倒的SQL字符串并运行它,看看你得到预期的结果? – 2014-11-21 16:22:29

    +0

    在你的where条件和“like”运算符中使用括号 – 2014-11-21 16:22:59

    回答

    2

    你没有照顾AND优先在OR。你需要添加括号。

    $sql = mysql_query("SELECT username1, username2 " . 
            "FROM friends " . 
            "WHERE (username1 = '$username' OR username2 = '$username') AND friends >= 2") or die (mysql_error()); 
    while ($row = mysql_fetch_assoc($sql)) { 
         echo "<p>".$row['username1']."</p>"; 
    } 
    
    +0

    完美,它的工作!谢谢! – 2014-11-21 16:27:46

    +1

    使用'where'$ username'IN(username2,username2)AND(friends> = 2)'也会起作用。尽管如果增加更多条款仍然会受到同样的问题。 – 2014-11-21 16:37:33

    相关问题