2013-02-18 41 views
0

我正在將一些代碼轉換爲訪問數據庫到PDO。我遇到以下情況:PHP PDO mysql_data_seek

mysql_data_seek($result, 0); 
$row0 = mysql_fetch_assoc($result); 

從我在谷歌等的讀數,我理解這一點應該是:

$row0 = $result->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_ABS, 0); 

然而,這是行不通的。任何想法我做錯了什麼?

+0

的輸出是什麼? – Achrome 2013-02-18 23:18:50

+0

'$ result'從哪裏來? – michi 2013-02-18 23:24:42

+0

$ result = $ db-> query($ someSqlQuery)或死(「failed!」); $ someArray = array(); \t while($ row = $ result-> fetch(PDO :: FETCH_ASSOC)){\t \t array_push($ someArray,$ row ['FirstName']); } – 2013-02-18 23:29:13

回答

1

從手冊;

從與PDOStatement對象關聯的結果集中獲取一行。 fetch_style參數確定PDO如何返回行。

您需要一個由PDO::prepare方法創建的stmt

讓我們來看看這個;

// assuming $pdo was created before as well 
$sth = $pdo->prepare("SELECT name, colour FROM fruit"); 
// exec here 
$sth->execute(); 
// get a row here 
$row = $sth->fetch(PDO::FETCH_ASSOC); 
// here probably you'll get a print out like 
// Array([name] => Banana, [color] => Yellow) 
print_r($row); 

看到更多細節在這裏:PHP PDOStatement::fetch

+0

您需要執行一個準備好的語句。 – bitWorking 2013-02-18 23:50:56

+0

絕對真實! – 2013-02-18 23:52:26

1

與查詢第一種選擇:

可以遍歷直接query結果..

foreach ($db->query($sql) as $row) { 
    echo $row['FirstName']; 
} 

與第二個選項執行:

$sth = $db->prepare($sql); 
$sth->execute(); 
$row = $sth->fetch(PDO::FETCH_ASSOC); // fetch the next row from statement 
echo $row['FirstName']; 
+0

我得到了 - 它看起來$ result = $ dbM-> query($ sqlQuery)'已清理'過了一會兒($ row = $ result-> fetch(PDO :: FETCH_ASSOC))。通過寫另一個$ result2我使用它,它的工作。 – 2013-02-18 23:48:58

+0

然後將一個答案標記爲接受的答案。 – bitWorking 2013-02-18 23:57:01