2013-03-10 67 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