2012-12-10 184 views
-2

我使用這個PHP代碼,讓行,但它越來越錯誤如何從sqlite數據庫獲取行?

$db = new PDO('sqlite:db/logs'); 

$result = $db->exec("SELECT * FROM users"); 

while($row = $result->fetch(SQLITE_ASSOC)) 
{ 

} 

我使用的sqlite3和PHP5,我想知道,

  1. 我是用正確的代碼連接到數據庫我也用過sqlite.open(),但它也出現錯誤?

  2. new PDO('sqlite:db/logs')連接與數據庫,但爲什麼新的是創建新的數據庫,每次

  3. 我的主要問題是我得到錯誤的位置,而循環是

調用一個成員函數fetch()非對象

請幫我看看這個我是php和sqlite的新手

回答

4

使用PDO不能使用while,您可以使用過程方法使用它。

一些參考:REFERENCE LINK

可以使用$db->execinsert & update查詢。不是當你想要獲取記錄時。

請嘗試進行以下更改。

$db = new PDO('sqlite:db/logs'); 
//connection code here 
$result = $db->query("SELECT * FROM users"); //replace exec with query 

foreach($result as $row){ 
    $row['field1']; 
    $row['field2']; 
} 
2

PDO::exec()返回的行數不是您可以讀取的對象。

PDO :: exec()返回您發佈的SQL語句修改或刪除的行數。如果沒有行受到影響,PDO :: EXEC()返回0

相反,你可以使用query()

$result = $db->query('SELECT * FROM users'); 

foreach($result as $row) 
{ 
    print_r($row); 
} 
+0

我可以用while循環代替的foreach? –

+0

@JaiffJJ - 不,你不能! –

+0

那麼我如何使用while循環? –

相關問題