2012-03-11 60 views
10

我八方通落得這樣如何從MySQL查詢

$q = "select whatIwant FROM table where id = 'myId'"; 
$r = mysql_query($q); 
while($i = mysql_fetch_array($r){ 
    /* iterate just one withem */ 
    $j = $i['whatIwant']; 
} 
echo $j; 

這是怎麼完成的,通常只取一排? (我只是想避免不必要的循環)

回答

11

除了正確的答案,有多種方法來處理這個問題:

  • 如果添加LIMIT 1,結果集將只包含一行,並且while循環將在一次迭代後終止:

    $q = "select whatIwant FROM table where id = 'myId' LIMIT 1"; 
    $r = mysql_query($q); 
    while($i = mysql_fetch_array($r)) { 
        $j = $i['whatIwant']; 
    } 
    echo $j; 
    
  • 如果調用mysql_fetch_array沒有一個循環,你會得到的結果集的第一行:

    $q = "select whatIwant FROM table where id = 'myId'"; 
    $r = mysql_query($q); 
    $i = mysql_fetch_array($r); 
    $j = $i['whatIwant']; 
    echo $j; 
    
  • 如果添加break循環體,循環將一個迭代後終止。

    $q = "select whatIwant FROM table where id = 'myId'"; 
    $r = mysql_query($q); 
    while($i = mysql_fetch_array($r)) { 
        $j = $i['whatIwant']; 
        break; 
    } 
    echo $j; 
    

您也可以將這些方法(雖然使用break是不是真的優雅在這種情況下)。

最好的方法是使用LIMIT並省略while循環,因爲@zaf shows in his answer。這使得代碼更清晰並避免了數據庫中不必要的操作。

2
select whatIwant FROM table where id = 'myId' limit 1 
2

好,然後離開了循環:

$q = "select whatIwant FROM table where id = 'myId'"; 
$r = mysql_query($q); 
$i = mysql_fetch_array($r); 
$j = $i['whatIwant']; 
echo $j; 

這將只取第一行。

8

您可以使用'LIMIT'語法指定sql查詢中的行數。另外,你可以刪除while循環,並得到第一行返回 - 如果這就是你想要的。

例如(無返回值檢查):

$q = "select whatIwant FROM table where id = 'myId' LIMIT 1"; 
$r = mysql_query($q); 
$i = mysql_fetch_array($r); 
print_r($i); 
0
$sql224="select * from z_category order by id asc LIMIT 1"; 
$res224=mysql_query($sql224); 
$rw224=mysql_fetch_array($res224); 
$activeid2= $rw224['pkid']; 
+3

歡迎堆棧溢出!儘管這段代碼片段是受歡迎的,並且可能會提供一些幫助,但它會[如果它包含解釋](/ meta.stackexchange.com/q/114762)* [如何解決該問題,將會大大改進]。沒有這些,你的答案就沒有什麼教育價值了 - 記住,你正在爲將來的讀者回答這個問題,而不僅僅是現在問的人!請編輯您的答案以添加解釋,並指出適用的限制和假設。 – 2017-05-09 13:08:52