$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这个怎么不起作用啊
改为
$sql="SELECT * FROM test order by id desc limit 1";
使用官方文档的例子测试一样不行。所以在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);
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