2013-02-21 120 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]; 
}