1

我试图在网页中一次又一次地访问数据。有没有更好的办法 ?movetofirst()、movetolast()、movetoprevious()、movetonext() 之类的东西可能会很好。

现在我正在将结果集作为数组检索(使用 fetchall())并一次又一次地重新使用该数组。

有没有像下面这样的事情?我不需要一次又一次地执行查询。如果结果/数组有数百行,则将数据保存在数组中并消耗资源。

$sql = 'SELECT cityname, statename FROM TBLPLACES ORDER BY cityname, statename';
$stmt = $conn->query($sql);
if ($stmt) {
    while($row=$stmt->fetch()){
       // do some thing
    }

    // do some more thing
    //
    // now here, can i access same $stmt object
    // to fetch resultset again without executing
    // $stmt = $conn->query($sql); again ?
    // (no change in query sql, need to fetch the same static data again.)
    //
    // something like below will be nice.
    //
    // $stmt->movetofirst();
    // while($row=$stmt->fetch()){
    //   do some thing;
    // } 
}
4

3 回答 3

2

要获取最后一个结果,您可以执行以下操作:

$row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_LAST);

或手动编写行号。这里的其他PDO::FETCH_ORI_*常量,但本质上你想更多地注意PDOStatement::fetch()方法中的第二个和第三个参数。

于 2011-10-14T13:01:27.097 回答
1

只需使用fetchAll在数组中获取整个结果:

$sql = 'SELECT cityname, statename FROM TBLPLACES ORDER BY cityname, statename';
$stmt = $conn->query($sql);
// You should not silently ignore errors.
// Set PDO error mode to PDO::ERRMODE_EXCEPTION to handle query failure
$data = $stmt->fetchAll();

foreach ($data as $row) {
  // Do one thing
}
foreach ($data as $row) {
  // Do another thing
}
于 2011-10-14T12:57:11.137 回答
0

使用 PDO,您无需创建查询即可获取上一个或下一个,请尝试 juste : PDO::CURSOR_SCROLL

参考(示例 2): http: //php.net/manual/en/pdostatement.fetch.php

于 2013-11-11T10:48:19.767 回答