2013-02-18 107 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