$sql="SELECT * FROM test";
  $sth = $link->prepare($sql,array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));                                                            
  $sth->execute();  
  $row = $sth->fetch(PDO::FETCH_NUM,PDO::FETCH_ORI_LAST);
  var_dump($row); 这个代码,显示出来的数据应该是,最后一条,结果显示出来的怎么还会是第一条数据呢
 是我PHP低吗?我的PHP是5.3的了,FETCH_ORI_LAST这个怎么不起作用啊

解决方案 »

  1.   

    $sql="SELECT * FROM test";
    改为
    $sql="SELECT * FROM test order by id desc limit 1";
      

  2.   

    不行估计是bug
    使用官方文档的例子测试一样不行。所以在sql中order by limit 1来获取最后一条吧
    <?php
    function get_conn($config){    $dbhost = $config['host'];
        $dbname = $config['dbname'];
        $dbuser = $config['user'];
        $dbpasswd = $config['password'];
        $pconnect = $config['pconnect'];
        $charset = $config['charset'];    $dsn = "mysql:host=$dbhost;dbname=$dbname;";
        try {
            $h_param = array(
                    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            );
            if ($charset != '') {
                $h_param[PDO::MYSQL_ATTR_INIT_COMMAND] = 'SET NAMES ' . $charset; //設置默認編碼
            }
            if ($pconnect) {
                $h_param[PDO::ATTR_PERSISTENT] = true;
            }
            $conn = new PDO($dsn, $dbuser, $dbpasswd, $h_param);    } catch (PDOException $e) {
            throw new ErrorException('Unable to connect to db server. Error:' . $e->getMessage(), 31);
        }    return $conn;
    }$config = array(
        'host' => 'localhost',
        'dbname' => 'test',
        'user' => 'root',
        'password' => '',
        'pconnect' => 0,
        'charset' => ''
    );$conn = get_conn($config);function readDataForwards($dbh) {
      $sql = 'SELECT * from demo order by id';
      try {
        $stmt = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
        $stmt->execute();
        while ($row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_NEXT)) {
          $data = $row[0] . "\t" . $row[1] . "\t" . $row[2] . "\n";
          print $data;
        }
        $stmt = null;
      }
      catch (PDOException $e) {
        print $e->getMessage();
      }
    }
    function readDataBackwards($dbh) {
      $sql = 'SELECT * from demo order by id';
      try {
        $stmt = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
        $stmt->execute();
        $row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_LAST);
        do {
          $data = $row[0] . "\t" . $row[1] . "\t" . $row[2] . "\n";
          print $data;
        } while ($row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_LAST));
        $stmt = null;
      }
      catch (PDOException $e) {
        print $e->getMessage();
      }
    }print "Reading forwards:\n";
    readDataForwards($conn);print "Reading backwards:\n";
    readDataBackwards($conn);
      

  3.   

    当您的问题得到解答后请及时结贴.
    http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html
    http://topic.csdn.net/u/20100428/09/BC9E0908-F250-42A6-8765-B50A82FE186A.html