2015-04-03 57 views
0

我有一個PHP的SQLite查詢:sqlite3的同時返回索引和關聯數組

$database = new SQLite3("database.db"); 
$statement = $database->prepare("SELECT * FROM table"); 
$result = $statement->execute(); 
$table = array(); 
while ($row = $result->fetchArray()) { 
    array_push($table, $row); 
} 
var_dump($table); 

它輸出

array(2) { 
    [0]=> array(4) { 
     [0]=> int(1) 
     ["event"]=> int(1) 
     [1]=> string(2) "A1" 
     ["code"]=> string(2) "A1" 
    } 
    [1]=> array(4) { 
     [0]=> int(5) 
     ["event"]=> int(5) 
     [1]=> string(2) "A2" 
     ["code"]=> string(2) "A2" 
    } 
} 

哪一個是正確的數據,但它輸出的所有信息兩次:一個帶有索引,另一個帶有列名。有什麼辦法可以選擇其中之一嗎?這個程序需要非常有效的內存,因爲它將被擴展到有成千上萬行。

回答

0

SQLite的fetchArray函數可以採用模式參數。您可以使用SQLITE3_ASSOCSQLITE3_NUMSQLITE3_BOTH獲得所需的效果。我想我應該已經看過了我的文檔發佈之前:)

0

這會給你一個普通的MySQL風格assoc命令陣列輸出,

$db = new SQLite3('dbs'); 

$result = $db->query("SELECT * FROM table"); 

$assoc_array = array(); 

while ($dbs_row = $result->fetchArray(SQLITE3_ASSOC)) { 
    $assoc_array[] = $dbs_row; 
}