2012-12-25 96 views
1

我有幾個自動增量s.no和各自的names在我的MySQL數據庫。優化我的sql查詢

目前所寫的queries如下所示。

$result = mysql_query ("SELECT name FROM table WHERE s.no= '1'") or die (mysql_error()); 
    while($row = mysql_fetch_array($result)){ 

    $name1= $row['name']; 
    } 

    $result = mysql_query ("SELECT name FROM table WHERE s.no= '2'") or die (mysql_error()); 
    while($row = mysql_fetch_array($result)){ 

    $name2= $row['name']; 
    } 

這怎麼可能進行優化,有一個單一查詢和s.no=N分配name1s.no=1nameN

+2

只是兩個人的名字,或N名字?另外,'mysql_'擴展在PHP 5.5中被棄用;你應該使用PDO或MySQLi或其他東西。 – Ryan

回答

5

你可以用IN條款來做到這一點。

SELECT name, s.no as no FROM table WHERE s.no IN ('1', '2') 

然後,用字符串動態查找變量。

$varName = 'name'.$row['no']; 
$$varName = $row['name]; 
+0

Worked喜歡的魅力,謝謝.. –

0
$result = mysql_query ("SELECT name,s.no numb FROM table WHERE s.no= '1' OR s.no= '2'") or die (mysql_error()); 
while($row = mysql_fetch_array($result)){ 

if($row['numb']==1) 
    $name1= $row['name']; 
else if($row['numb']==2) 
    $name2= $row['name']; 

} 
0

原諒我的PHP,但像這樣的工作。

$name = []; 

$result = mysql_query ("SELECT s.no, name FROM table") or die (mysql_error()); 
while($row = mysql_fetch_array($result)) { 
    $index = $row['no']; 
    $name[$index] = $row['name']; 
} 

我不得不在近期在java中使用Map來跟蹤批量查詢中的邏輯「組」。上面的代碼使用了相同的想法。

如果你只想在(1,2)中獲取s.no的行,那麼上面的海報說你可以使用IN子句。

+0

它應該是$ name = array();除此之外它看起來不錯 – kingW3

0
$sql = "SELECT name FROM table WHERE s.no IN ('1', '2') order by s.no asc"; 
$result = mysql_query($sql); 
$name1 = mysql_result($result, 0, 0);//fetches row 0, column 0 
$name2 = mysql_result($result, 1, 0);//fetches row 1, column 0