Php 多sql选择pdo

Php 多sql选择pdo,php,sql,pdo,Php,Sql,Pdo,由于某些原因,我的查询在我的PHP脚本中不起作用,我实际上是在尝试进行一个查询,以获取所有得分大于0的玩家,尽管我也在尝试获取一些得分等于0但合格数量大于0的玩家。下面是我的示例代码 示例 $sql = " SELECT * FROM allplayers WHERE points > 0 ORDER BY points DESC SELECT * FROM allplayers WHERE points = 0 and qualified

由于某些原因,我的查询在我的PHP脚本中不起作用,我实际上是在尝试进行一个查询,以获取所有得分大于0的玩家,尽管我也在尝试获取一些得分等于0但合格数量大于0的玩家。下面是我的示例代码

示例

 $sql = "
            SELECT * FROM allplayers WHERE points > 0 ORDER BY points DESC
            SELECT * FROM allplayers WHERE points = 0 and qualified > 0
    ";

    $q = $pdo->query($sql);
        while ($dnn = $q->fetch()) { 
              //script
        }
player       points         qualified

Alex         90             1
Amy          0              1
Jimmy        200            0
John         0              0
表格示例

 $sql = "
            SELECT * FROM allplayers WHERE points > 0 ORDER BY points DESC
            SELECT * FROM allplayers WHERE points = 0 and qualified > 0
    ";

    $q = $pdo->query($sql);
        while ($dnn = $q->fetch()) { 
              //script
        }
player       points         qualified

Alex         90             1
Amy          0              1
Jimmy        200            0
John         0              0
该查询正在尝试取回表中的所有人,但john除外,john的分数为0且未通过资格验证(合格验证为0)
感谢阅读:)

如评论中所述,您不能执行多个查询,并且忘记了用分号结束第一个查询。但是,您不需要多个查询。如果要消除点和限定列的值均为0的任何图元,则只需选择任何一列的值均大于0的图元。这应该起作用:

编辑: 正如@JitendraSoftgrid所指出的,更合适的答案是使用您的原始条件,因为它将解释
限定
列中的任何负值。以下是两个查询的组合版本:

$sql = "SELECT * FROM allplayers 
        WHERE points > 0
        OR (points = 0 and qualified > 0)
        ORDER BY points DESC";

如注释中所述,您不能执行多个查询,并且忘记了用分号结束第一个查询。但是,您不需要多个查询。如果要消除点和限定列的值均为0的任何图元,则只需选择任何一列的值均大于0的图元。这应该起作用:

编辑: 正如@JitendraSoftgrid所指出的,更合适的答案是使用您的原始条件,因为它将解释
限定
列中的任何负值。以下是两个查询的组合版本:

$sql = "SELECT * FROM allplayers 
        WHERE points > 0
        OR (points = 0 and qualified > 0)
        ORDER BY points DESC";


PDO不支持多个查询,您需要一个
在查询之间,即使did@RiggsFolly我经常问自己“为什么”,也就是说。@FunkFortyNiner你经常在花时间思考这些神秘的细节时:):)你似乎只需要一个
,因为排序顺序将把0点记录放在最后…使用一个查询
where points>0或(points=0,qualified>0)
PDO不支持多个查询,在查询之间需要一个
,即使是did@RiggsFolly我经常问自己为什么。@FunkFortyNiner当你花时间思考这些神秘的细节时,你经常这样做吗:):):)您似乎只需要一个
,因为排序顺序将把0点记录放在最后…使用一个查询
where points>0或(points=0和qualified>0)
可能只需要一个合格的cirteria就够了,不是吗?OP为什么要尝试这个?好的答案总是会有一个解释,说明做了什么以及为什么这样做,不仅是为了OP,而且是为了未来的访客,以便他们可以找到这个问题并阅读您的答案。OP希望删除两个字段的值均为0的任何人。因此,不需要工会,这应该可以解决问题。@jeroen这是一个明智的答案。这是可以改进的,但最重要的信息“运行多个查询的唯一原因是缺乏SQL知识”是正确的。我认为
where points>0或(points=0和qualified>0)
会更好,因为OP需要:P;)也许只有合格的cirteria就足够了,不是吗?还有为什么OP要尝试这个?好的答案总是会有一个解释,说明做了什么以及为什么这样做,不仅是为了OP,而且是为了未来的访客,以便他们可以找到这个问题并阅读您的答案。OP希望删除两个字段的值均为0的任何人。因此,不需要工会,这应该可以解决问题。@jeroen这是一个明智的答案。这是可以改进的,但最重要的信息“运行多个查询的唯一原因是缺乏SQL知识”是正确的。我认为
where points>0或(points=0和qualified>0)
会更好,因为OP需要:P;)