2014-02-07 56 views
0

我不確定是否以最佳方式對此進行了討論,但我想要做的是在mysql選擇查詢中使用兩個php變量作爲IN子句。在mysql選擇語句中使用兩個php變量

"select * from `user` where '$phpvar1' IN ('$phpvar2')" 

通常情況下,而不是$ phpvar1我將在user表使用列名,但它工作得很好,在我的情況,現在我需要$ phpvar1變量在這一特定的選擇查詢被用作臨時列。由於$ phpvar1在每種情況下都是動態的,因此我不想存儲它。我能做什麼?謝謝!

編輯:爲了澄清,$phpvar1不是表中的列,但我希望它只作爲一個查詢。在這個查詢中,我想要$phpvar1,它等於例如:「cat」,其中「cat」是在列中可以找到的數據,然後這個數據(「cat」)將用於IN子句中看看$phpvar2包含「貓」

基本上我希望它做的是這樣的:

SELECT * from `users` where 'mouse' IN ('cat', 'dog') and `userID` = '1' 

返回的行應該有一個用戶ID = 1,滿足IN子句,因爲「鼠標」不('貓,'狗')在這種情況下不會有任何行返回。

+0

你執行了查詢嗎? –

+0

你只是試圖將PHP變量的值插入到MySQL字符串中嗎? – jwatts1980

+1

試試這個:''「從'user'中選擇*,其中'($ phpvar2')」''中的$ phpvar1'。你的'$ phpvar2'如何形成? – vee

回答

2

重寫查詢以:

"SELECT * FROM `users` WHERE '$phpvar1' IN ('".implode("', '", $phpvar2)."') and `userID` = '1'" 

假設$phpvar2是含有值來檢查陣列。

+0

是的,對不起,我只是注意到:) –

+0

這不會做我想做的。 MySQL將'$ phpvar1'視爲不存在的列。 – user1965476

+0

@ user1965476好的,我得到了你想要的,但你的方法是錯誤的。您可以在查詢的select部分中定義臨時字段。什麼是你的'where'部分?它將會像''select',''phpvar1 \'從''user''那裏得到......'' –

0

嘗試

$sql = "select * from `user` where ".$phpvar1." in (".$phpvar2.")"; 
+0

沒有消毒? Tsk tsk tsk – Ares

0

你的PHP變量應該是在選擇部分 選擇$ phpvar,otherstuff,從用戶,其中x在( '$ phpvar2');

+0

對不起,我無法在移動設備上對其進行格式化。 – bart2puck