2011-10-07 124 views
0

我在那裏看到有很多方法可以將SQL查詢的結果轉換爲可用格式(即變量)。獲取SQL查詢結果

如果我有一個針對性的SQL查詢,我知道他一定會返回一組預期值,可以說,查詢客戶號提取數據,城市,州,姓和名,等等。

代碼例如如下:

$example = '50'; 
$result = mysql_query("SELECT * FROM customers WHERE customer_ID = '$example'",$db); 
while ($row = mysql_fetch_assoc($result)) { 
    foreach ($row as $col => $val) { 
    if ($col == 'firstname') { 
     $customerfirstname = $val; 
    } 
    } 
} 

或另一種方式:

$result = mysql_query("SELECT * FROM customers WHERE customer_ID = '$example'",$db); 
$myResultArray = array(); 

while ($row = mysql_fetch_assoc($result)) 
    $myResultArray = $row; 

    foreach ($myResultArray as $val) { 
    $customerfirstname = $val['firstname']; 
    } 

這只是兩塊我能想到的。

以上方法之一是否比另一方更好?如果是這樣,爲什麼?

是否有另一種方法比這兩種方法更有效?

+2

請用您正在使用的語言標記問題。 – Oded

回答

3

兩者都不是優選的。

foreach是多餘的。

既然你知道你需要的字段名,你可以這樣做:

while ($row = mysql_fetch_assoc($result)) { 
    $customerfirstname = $row['firstname']; 
} 

如果你需要申請有條件出於某種原因,你可以測試陣列中的字段的存在:

while ($row = mysql_fetch_assoc($result)) { 
    if (isset($row['firstname'])) { 
     $customerfirstname = $row['firstname']; 
    } 
} 

最後,因爲你看上去由主鍵選擇,while循環也是不必要:

if ($row = mysql_fetch_assoc($result)) { 
    $customerfirstname = $row['firstname']; 
} 
0

我已經使用了你在每個網站中提出的第一個例子,這個例子需要一個數據庫,它並沒有讓我失敗。至於如果一個比另一個好,我會說不。這只是一個品味問題。

0

有很多方法。這裏是一個快速的,但我寧願使用DTO進行設置,並以這種方式訪問​​它......這將工作,雖然你的問題。

$query = "SELECT first_name, last_name, city FROM customers WHERE customer_id = '$example'"; 
$result = mysql_query($query); 

// If you are expecting only one row of data, then use this: 
list($first_name, $last_name, $city) = mysql_fetch_row($result); 

//several rows: 
while(list($first_name, $last_name, $city) = mysql_fetch_row($result)){ 
    echo $first_name; 
} 
0

我似乎失去了一些東西......

爲什麼不呢?

$result = mysql_query("SELECT * FROM customers WHERE customer_ID = '$example'",$db); 
while ($row = mysql_fetch_assoc($result)) { 
    $customerfirstname = $row['firstname']; 
} 

在第一個例子中?