PDO怎样将结果集指针移动到指定的记录位置上啊
mysql内置函数mysql_data_seek可以将指针移到指定的记录位置,PDO有没有提供类似功能的函数呢,因为我想用这个做分页程序,我查了一下PDO中有个FETCH_ORI_ABS的函数,好像说它也能移动指针,但我不知道具体怎样用哦。
回复讨论(解决方案)
http://www.sitepoint.com/forums/showthread.php?709890-Equivalent-of-mysqli_data_seek-in-PDO
郁闷,这篇帖子说这是不可能的。
难道我下面的分页程序就真的没法实现了
/*连接数据库*/
$dsn="mysql:host=localhost;dbname=guestbook";
$db=new PDO($dsn,'root','111'); //连接数据库
$db->query('set names gb2312'); //设置字符集
if(isset($_GET['page']) && (int)$_GET['page']>0) //获取页码
$Page=$_GET['page'];
else
$Page=1;
//设置每页显示记录数
$PageSize=4;
$keyword=trim($_GET['keyword']);
if ($keyword "")
{
$sql="select * from lyb where title like '%?%'";
$result=$db_prepare($sql); //创建结果集
$result->bindParam(1,$keyword);
}
else $result=$db->prepare("select * from lyb",array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
$result->execute();
$RecordCount=$result->rowCount();
$PageCount =ceil($RecordCount/$PageSize);
?>
标题 | 内容 | 作者 | 来自 | |
---|---|---|---|---|
= $row['title'];?> | = $row['content'];?> | = $row['author'];?> | = $row['email'];?> | = $row['ip'];?> |
// 显示分页链接
if($Page== 1)
echo "第一页 ";
else echo " 第一页 ";
if($Page==1) // 设置“上一页”链接
echo " 上一页 ";
else echo " 上一页 ";
for($i=1;$i if ($i==$Page) echo "$i ";
else echo " $i ";}
if($Page== $PageCount) // 设置“下一页”链接
echo " 下一页 ";
else echo " 下一页 ";
if($Page == $PageCount) //设置“最后一页”链接
echo " 末页 ";
else echo " 末页 ";
echo "   共".$RecordCount. "条记录 "; //共多少条记录
echo " $Page/$PageCount 页"; //当前页的位置
?>
对于支持 LIMIT 子句的数据库,比如 mysql、sqlite 等可用 limit 起始,长度 分页
对于不支持 LIMIT 子句的数据库,比如 mssql、oracle 等可结合 ROWNUM、RN 完成分页
据说高版本的 mysql 也支持 ROWNUM、RN 了,那么分页代码就可简化许多了
就你的代码而言
$result->execute(); 是查询所有符合条件的记录
$row=$result->fetch(PDO::FETCH_ASSOC,PDO::FETCH_ORI_ABS,$Pos); 是获取其中一条,于是就要在循环里执行
你完全可以
$rows = $result->fetchall(PDO::FETCH_ASSOC,PDO::FETCH_ORI_ABS,$Pos);
全部取出,并
$rows = array_chunk($rows, $PageSize);
按每页行数切割成数组 ,再
foreach($rows[$Page-1] as $row) {
//输出内容
}
问题是这句获取不到其中一条,获得的总是第一条,也就是说PDO::FETCH_ORI_ABS,$Pos根本没起作用。
$row=$result->fetch(PDO::FETCH_ASSOC,PDO::FETCH_ORI_ABS,$Pos);
我知道用limit子句进行分页了,但我想换种方法分页,我喜欢把所有记录都读入结果集中再分页,这样对小的结果集来说速度快些。
同一页你的 $Pos 一直没变。
$row=$result->fetch(PDO::FETCH_ASSOC,PDO::FETCH_ORI_ABS,$Pos+$i);
同一页你的 $Pos 一直没变。
$row=$result->fetch(PDO::FETCH_ASSOC,PDO::FETCH_ORI_ABS,$Pos+$i);
您看错了,我输出完一条后有一个$Pos++;
的
问题是 我把 $row=$result->fetch(PDO::FETCH_ASSOC,PDO::FETCH_ORI_ABS,$Pos);
改成
$row=$result->fetch();
结果完全是一样的,FETCH_ORI_ABS,$Pos完全没起作用
PDO::FETCH_ORI_ABS,$Pos 生效是有条件的
$result->fetchall() 比较好

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds



Laravel simplifie la gestion des données de session temporaires à l'aide de ses méthodes de flash intuitives. Ceci est parfait pour afficher de brefs messages, alertes ou notifications dans votre application. Les données ne persistent que pour la demande ultérieure par défaut: $ demande-

L'extension PHP Client URL (CURL) est un outil puissant pour les développeurs, permettant une interaction transparente avec des serveurs distants et des API REST. En tirant parti de Libcurl, une bibliothèque de transfert de fichiers multi-protocol très respectée, PHP Curl facilite Efficient Execu

Laravel fournit une syntaxe de simulation de réponse HTTP concise, simplifiant les tests d'interaction HTTP. Cette approche réduit considérablement la redondance du code tout en rendant votre simulation de test plus intuitive. L'implémentation de base fournit une variété de raccourcis de type de réponse: Utiliser illuminate \ support \ faades \ http; Http :: faux ([[ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

Voulez-vous fournir des solutions instantanées en temps réel aux problèmes les plus pressants de vos clients? Le chat en direct vous permet d'avoir des conversations en temps réel avec les clients et de résoudre leurs problèmes instantanément. Il vous permet de fournir un service plus rapide à votre personnalité

La journalisation PHP est essentielle pour surveiller et déboguer les applications Web, ainsi que pour capturer des événements critiques, des erreurs et un comportement d'exécution. Il fournit des informations précieuses sur les performances du système, aide à identifier les problèmes et prend en charge le dépannage plus rapide

L'article traite de la liaison statique tardive (LSB) dans PHP, introduite dans PHP 5.3, permettant une résolution d'exécution de la méthode statique nécessite un héritage plus flexible. Problème main: LSB vs polymorphisme traditionnel; Applications pratiques de LSB et perfo potentiel

L'article examine l'ajout de fonctionnalités personnalisées aux cadres, en se concentrant sur la compréhension de l'architecture, l'identification des points d'extension et les meilleures pratiques pour l'intégration et le débogage.

Alipay Php ...
