2014-02-26 105 views
0

敲我的頭靠在牆上這裏...一直停留在這個現在一段時間...查詢工作在phpMyAdmin,但不是在PHP腳本

我有這個疑問:

include 'dbconnect.php'; 
    $user1id=$_SESSION['userid']; 
    $stmt=$db->prepare("SET @chatroom_ID=(SELECT ID FROM chatroom 
         JOIN chatroommembers ON chatroom_ID=chatroom.ID 
         WHERE chatroommembers.user_ID=:user1id 
         ORDER BY chatroom.ID 
         LIMIT 1); 
         SELECT user_ID FROM chatroommembers 
         WHERE [email protected]_ID 
         AND user_ID!=:user1id 
         LIMIT 1;"); 
    $stmt->bindValue(':user1id',$user1id,PDO::PARAM_INT); 
    $stmt->execute(); 
    $user2id=$stmt->fetchColumn(); 
    echo $user2id; 

它應該做的是找到當前用戶所在的聊天室ID,並且回顯出房間中第二個人的用戶ID(房間中總是隻有2個)

查詢在PHPmyadmin中工作...但不在我的PHP腳本中

我可以回聲$ user1id沒有問題

如果我和它的工作原理簡單的SELECT語句替換查詢,例如:

SELECT user_ID FROM chatroommembers WHERE user_ID=:user1id 

我已經試過幾乎所有我能想到的,這聲明只是不想工作...

沒有錯誤正在輸出(我甚至做錯了,以確保我的錯誤將輸出,他們這樣做)。

+7

這不是一個查詢,它的兩個 – 2014-02-26 21:56:52

+0

它的工作方式在我已經完成的其他查詢中,我需要先設置一個值 –

+0

也許嘗試將其分隔爲兩個查詢,看看是否有幫助? – muttley91

回答

1

正如Dagon在評論中提到的那樣,您有兩個疑問。默認情況下,PHP的MySQL庫將限制您一次只能使用一個查詢 - 主要是爲了防止來自多個查詢的SQL injection

Howevever,mysqli has a multi_query支持這個功能,在你的情況PDO can support multiple queries with PDOStatement::newRowset

還有其他的選擇對你來說太:

我不得不偶爾解決這個問題,尤其是使用臨時表的時候。使用SQL事務和/或簡單地將每個查詢拆分爲單獨的PHP語句將會有所斬獲。

+0

非常感謝多位老兄:D ...不知道nextRowset()...我的頭部現在有點傷害:D –

+0

酷 - 檢查項目符號中的第二個鏈接也指出,PDO還有另一個例子 –

相關問題