2012-06-28 75 views
2

可能重複:
I have an array of integers, how do I use each one in a mysql query (in php)?

我試圖創造一些過濾功能,我想知道是否有可能,在一個mysqli查詢中,檢查錶行的值是否等於數組中的一個值。我希望代碼將使其更清晰:

$age=array(37,35); 
$query = mysqli_query($link, "SELECT * FROM users WHERE age = $age"); 

所以我想查詢返回的用戶的年齡或者是37或35,但上面的代碼不工作的所有行。

使用

...WHERE age = 35 OR age = 37" 

不會做,因爲我希望它是動態的,可以這麼說。

謝謝

回答

4

使用SQL的IN()子句。

SQL實例:

SELECT * FROM users WHERE age IN (35, 37) 

PHP實例:

$query = "SELECT * FROM users WHERE age IN (" . implode(',', array_map('intval', $age)) . ")"; 

注:留心SQL Injection

+0

你是我的英雄。非常感謝! – Patrick

+0

如果答案有幫助,請點擊答案左側的複選標記(它會變成綠色),以便幫助獲得適當的學分。 – JoeTomato

+0

5分鐘前計時器不允許我,但我現在回來做。感謝 – Patrick

1

使用帶有IN子句的PHP join方法一起在SQL

$age=array(37,35); 
$query = mysqli_query($link, "SELECT * FROM users WHERE age IN (".join(",", $age).")"); 
+0

請注意'join()'是'implode()'的別名。我建議使用root功能。 –

+0

這是一個implode的別名 - 我傾向於將它用於可讀性,因爲implode對我來說並不明顯。也許這只是我,雖然... –

1

使用方法如下:

$query = mysqli_query($link, "SELECT * FROM users WHERE age IN (" . implode(",",$age) . ")"); 
2
$age=array(37,35); 
$age_str=implode(',',$age); 
$query = mysqli_query($link, "SELECT * FROM users WHERE age in ($age_str)"); 
1

使用in條款。

$ageArr = implode(',',$age); 
SELECT * FROM users WHERE age IN ($ageArr); 
相關問題