2013-02-21 121 views
1

我跟蹤的幾件事情在我的網站,並使用了大量查詢的IM,因爲他們需要例如查詢多個條件

$example = mysql_query("SELECT column FROM table WHERE column = 'Value1'"); 
$example_row = mysql_num_rows($example); 

$example1 = mysql_query("SELECT column FROM table WHERE column = 'Value2'"); 
$example_row1 = mysql_num_rows($example1); 

等等不同conidtions

,值始終不同,所以我很難找到一種方法來做到這一點在一個查詢中,我仍然可以得到不同的行數不同的值,這可能嗎?

我可以測試該行,看它是否

if ($row == 'value'){ 

} 

多次匹配的價值,但它似乎仍然不好

+0

如果你想在兩個不同的PHP變量的結果($ ROW1,ROW2 $),這是最好不要到查詢組合。但是可以將VALUE1,VALUE2,...,VALUE100存儲在數組中,並通過在該數組上循環來獲取結果。 – Mojtaba 2013-02-21 00:30:57

+0

你只需要每個結果的數量? mysql_num_rows將返回結果的數量。如果是這樣的情況做SELECT計數(*)從等 – Mojtaba 2013-02-21 00:56:38

回答

2

使用IN()

SELECT column FROM table WHERE column IN('Value1', 'Value2'); 
+1

另外,你應該使用mysqli – 2013-02-21 00:27:59

+0

我將如何獲得行匹配value1和單獨的行匹配value2雖然? – 2013-02-21 00:28:25

+0

行總是獨立的,除非你有意地將它們分組。如果你想讓它們組織起來,那麼使用'ORDER BY'子句。 – 2013-02-21 00:29:14

0

我相信你想每計數值:

$values = ["value1", "value2", ...]; 
$query = "SELECT "; 

for($i = 0; $i < count($values); $i++) 
{ 
    $query .= "SUM(IF(column = '$values[$i]')) AS v$i"; 

    if($i != count($values) - 1) 
     $query .= ","; //Only add ',' if it's not the last value 

    $query .= " "; //We need the spaces at the end of every line 
} 

$query .= "FROM table"; 

//Let mysql do its work, run the query etc., store the resultset in $row; 

現在,您可以通過ResultSet動態循環:

$results = []; 
for($i = 0; $i < count($values); $i++) 
{ 
    $string = "v"+ $i; 
    $results[] = $row[$string]; 
}