2013-03-30 65 views
1

也許我早已習慣於習慣於使用ORM方法從數據庫中提取數據,但我現在正在爲我的一個朋友製作一個簡單的小項目,這個項目不需要所有額外的guff MVC的,ORM的等等..下面是一個我正在建立在PHP中的類的查詢的例子。mysql意外的查詢輸出

$this->sqlstart(); 
$sql = "select label, setting from ".$this->_settings." where id <= 4"; 
$query = mysql_query($sql); 

$result = array(); 
while($row = mysql_fetch_array($query)) 
{ 
    $result[] = $row; 
} 
return $result; 

return $result的輸出是:

Array 
(
    [0] => Array 
     (
      [0] => Week 1 Pay 
      [label] => Week 1 Pay 
      [1] => 2995 
      [setting] => 2995 
     ) 

    [1] => Array 
     (
      [0] => Week 2 Pay 
      [label] => Week 2 Pay 
      [1] => 2995 
      [setting] => 2995 
     ) 

    [2] => Array 
     (
      [0] => Week 1 Dates 
      [label] => Week 1 Dates 
      [1] => 1-15 
      [setting] => 1-15 
     ) 

    [3] => Array 
     (
      [0] => Week 2 Dates 
      [label] => Week 2 Dates 
      [1] => 16-31 
      [setting] => 16-31 
     ) 

) 

它應該是

Array 
(
    [0] => Array 
     (
      [label] => Week 1 Pay 
      [setting] => 2995 
     ) 

    [1] => Array 
     (
      [label] => Week 2 Pay 
      [setting] => 2995 
     ) 

    [2] => Array 
     (
      [label] => Week 1 Dates 
      [setting] => 1-15 
     ) 

    [3] => Array 
     (
      [label] => Week 2 Dates 
      [setting] => 16-31 
     ) 

) 

任何人都可以指出我在哪裏集合的附加數據是從哪裏來的?

+0

檢查手冊'mysql_fetch_array()'。 http://php.net/manual/en/function.mysql-fetch-array.php –

+0

@MichaelBerkowski我認爲你是對的。我應該更加努力地尋找。我可能偶然發現了答案 – chris

+0

PS,這聽起來像是習慣於使用mysqli或PDO apis而不是obselete mysql的極好機會! –

回答

2

http://php.net/manual/en/function.mysql-fetch-array.php

array mysql_fetch_array (resource $result [, int $result_type = MYSQL_BOTH ]) 

要麼通過MYSQL_ASSOC作爲第二PARAM只得到一個關聯數組回來,或只是調用mysql_fetch_assoc()

+0

是的,我認爲可以安全地說我現在非常習慣於使用ORM方法,我不能相信我已經忘記了使用php提供的直接mySQL方法。猜猜這會成爲一個很好的進修項目。感謝:-) – chris

2

你應該能夠在這隻會輸出關聯列名第二個參數來傳遞:

while($row = mysql_fetch_array($query, MYSQL_ASSOC)) 
+0

或使用mysql_fetch_assoc(...)方法。 –

5

您應該使用mysql_fetch_assoc妥善得到的結果。它將爲您提供一個關聯數組,而不是一個正常的數組。

0

mysql_fetch_array返回兩種方式來訪問值:字段名稱指數。你可能會改變mysql_fetch_arraymysql_fetch_assoc或代碼更改爲:

while($row = mysql_fetch_array($query)){ 
    $result[] = array('label' => $row['label'], 'setting' => $row['setting']; 
}