2013-03-10 37 views
0

多列查询我有2项执行在PHP

拦截表,阻止

我想执行下面的查询

$statement = $conn->prepare('SELECT (blocked FROM blocks WHERE blocker = :myPlayerId) AND (blocker FROM blocks WHERE blocked=:myPlayerId)'); 
      $statement->bindParam(':myPlayerId', $myPlayerId, PDO::PARAM_INT); 
      $statement->execute(); 

我想在封锁和拦截列中的值我的id是myPlayerId。

回答

1

尝试着这样一句话:如果你真的想要这两个在同一行
SELECT blocked,blocker FROM blocks WHERE blocker=':myPlayerId' OR blocked=':myPlayerId' LIMIT 0,1

+0

它或很可能不同时,我得到这个{“结果” :[{“blocked”:“54”,“blocker”:“53”},{“blocked”:“53”,“blocker”:“54”}]}但是我想在两种情况下只得到53。如何才能做到这一点? – 2013-03-10 18:05:56

+0

我向查询添加了“LIMIT”。但是,这将始终返回找到的第一行。这是你在找什么? – TylerH4 2013-03-10 18:11:54

+0

没关系,我解决了这个问题,在客户端谢谢anywhy :) – 2013-03-10 18:13:08

0

,试着改变你的查询

SELECT * FROM 
    (SELECT blocked FROM blocks WHERE blocker = :myPlayer)t1 
    JOIN 
    (SELECT blocker FROM blocks WHERE blocked = :myPlayer)t2