我想在谷歌搜索中使用mysql_data_seek和PDO我发现它应该是这样的:
$row0 = $result->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_ABS, 0);
Run Code Online (Sandbox Code Playgroud)
但它不起作用,我做错了什么?这是我的代码:
$query = "SELECT name,age FROM users";
$q = $db->prepare($query);
$q->execute();
$q->setFetchMode(PDO::FETCH_ASSOC);
$arrayData = $q->fetchAll();
foreach ($arrayData as $row){
echo $row['name'] ." ";
echo $row['age'] ."<br>";
}
$result = $q->fetch(PDO::FETCH_OBJ,PDO::FETCH_ORI_ABS,4);
var_dump($result);
Run Code Online (Sandbox Code Playgroud)
我只想从上次运行查询中获取对象形式的第5行.我不想再次运行此查询(正如一些人告诉我的)我只想从sql缓冲区得到结果.
var_dump结果是:bool(false)
有任何想法吗?
编辑:
谢谢你的回答和抱歉,但也许我也不解释自己.我喜欢JSON的技巧但重点是第5行是示例.我只想使用PDO缓冲区中的查询结果,就像我在常规mysql中使用mysql_data_seek一样(更改光标).可能吗?我喜欢所有的技巧但不是我想要的.
PDO'游标'的默认值是 PDO :: CURSOR_FWDONLY,这意味着游标不能像mysql_data_seek一样回到零,以允许游标返回零,必须定义使用'可滚动游标'
例:
$db->prepare($query, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
Run Code Online (Sandbox Code Playgroud)
在使用它之前:
$row0 = $result->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_ABS, 0);
Run Code Online (Sandbox Code Playgroud)