大哥, 我想做个PHP文件, 访问一次这个PHP文件, 从数据库取一条记录, 第二次访问, 取下一条,
如何才能实现呢?游标怎么用法,?不太会写SQL语句. 谢谢了
回复讨论(解决方案)
这个不需要用MYSQL内的游标,在PHP中实现记录集的逐条访问就行了。
使用 limit 子句指定
使用$query="select * from cmsecms_custinfo LIMIT 1";取得一条记录, 第二次还是这条记录, 是不是要加个变量
$query="select * from cmsecms_custinfo LIMIT $ddd,1"; $ddd = $ddd+1; 之类的呢? 谢谢
使用$query="select * from cmsecms_custinfo LIMIT 1";取得一条记录, 第二次还是这条记录, 是不是要加个变量
$query="select * from cmsecms_custinfo LIMIT $ddd,1"; $ddd = $ddd+1; 之类的呢? 谢谢
$offset = 10; // 偏移值
$limit = 1; // 取多少条
$query="select * from cmsecms_custinfo LIMIT $offset, $limit"
例如,获取第11-15条记录。
$query="select * from cmsecms_custinfo LIMIT 10, 5"
是的,需要加个变量
并且这个变量是独立与程序的。可通过 url 传递,也可保存于 session 中
楼上大哥,我用的是静态变量,
static $cursor=0;
$query="select id,title,email from cmsecms_custinfo where id>'$cursor' LIMIT 1";
$cursor=$cursor+1;
$sql=$empire->query($query);
但PHP页面每次刷新时, $cursor还是0, 就是还是取得第一条记录, 怎么用静态变量,或全局变量?
不懂session怎么用, 谢谢了
所以我说“这个变量是独立于程序的”
而静态变量是存在于程序中的
使用 session 的一个方案是
session();if(! $_SESSION['cursor'])) $_SESSION['cursor'] = 0;$_SESSION['cursor']++;$cursor = $_SESSION['cursor'];$query="select id,title,email from cmsecms_custinfo LIMIT $cursor";
楼上大哥,我用的是静态变量,
static $cursor=0;
$query="select id,title,email from cmsecms_custinfo where id>'$cursor' LIMIT 1";
$cursor=$cursor+1;
$sql=$empire->query($query);
但PHP页面每次刷新时, $cursor还是0, 就是还是取得第一条记录, 怎么用静态变量,或全局变量?
不懂session怎么用, 谢谢了
谁告诉你静态变量刷新会保留的。。。?
session的话我提供一个例子给你参考
session_start();if(!issert($_SESSION['cursor'])){ $_SESSION['cursor'] = 0;}else{ $_SESSION['cursor'] ++;}$cursor = $_SESSION['cursor'];$query="select id,title,email from cmsecms_custinfo where LIMIT $cursor, 1";$sql=$empire->query($query);
手滑了一下。
应该这样:
session_start();if(!isset($_SESSION['cursor'])){ // 改了这里。 $_SESSION['cursor'] = 0;}else{ $_SESSION['cursor'] ++;} $cursor = $_SESSION['cursor']; $query="select id,title,email from cmsecms_custinfo where LIMIT $cursor, 1";$sql=$empire->query($query);
好的我试试, 有个疑问: 同一终端刷新这个PHP, 可以实现自动取下一条的话, 不同终端能实现吗?
也就是这个session是存在服务器呢还是本地呢? 我先试试吧
出现:
PHP Warning: session_start(): open(/tmp\sess_usuklqaaeh5j7tmrfh04vv9a54, O_RDWR) failed: No such file or directory (2) in D:\inetpub\CMS7\e\admin\ListOneInfo.php on line 46
PHP Warning: Unknown: open(/tmp\sess_usuklqaaeh5j7tmrfh04vv9a54, O_RDWR) failed: No such file or directory (2) in Unknown on line 0
PHP Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0
使用 session 这是各个终端自行变化
如果要让效果是这对所有终端的话,则需要将变量保存于数据库、文件、共享内存等中
出现:
PHP Warning: session_start(): open(/tmp\sess_usuklqaaeh5j7tmrfh04vv9a54, O_RDWR) failed: No such file or directory (2) in D:\inetpub\CMS7\e\admin\ListOneInfo.php on line 46
PHP Warning: Unknown: open(/tmp\sess_usuklqaaeh5j7tmrfh04vv9a54, O_RDWR) failed: No such file or directory (2) in Unknown on line 0
PHP Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0
因为你的是windows系统,没有/tmp,解决方法如下:
1.在 D:\inetpub\CMS7后建立一个tmp的folder 即 D:\inetpub\CMS7\tmp
2.将php.ini的 session.save_path = "/tmp" 改为 session.save_path = "D:\inetpub\CMS7\tmp"
3.重启服务
改了所有的PHP.INI, 重启服务, 还有一样错误, 奇怪了,
我先试试将变量保存于数据库、文件、共享内存等中, 不知道哪个简单 些
改了所有的PHP.INI, 重启服务, 还有一样错误, 奇怪了,
我先试试将变量保存于数据库、文件、共享内存等中, 不知道哪个简单 些
那就是你服务器没有配置好了,如果先测试,可以把变量写文件吧。
$file='session.txt';
if(!file_exists($file)){
$cursor = 0;
file_put_contents($file, 0, true);
}else{
$cursor = file_get_contents($file);
$cursor ++;
file_put_contents($file, $cursor, true);
}
$query="select id,title,email from cmsecms_custinfo where LIMIT $cursor, 1";
$sql=$empire->query($query);
大侠, 我看共享内存的功能,还要看在windows的时候只有在php是ISAPI运行模式才能正常工作,在安装php的时候要加上?enable-shmop。, 要怎么查看PHP是否支持共享内存?
好,还是用文件问题少, 谢谢大哥
用session好,用文件不好,因为文件是所有用户共享的。当不同用户访问。例如A先访问了10次,然后B访问,就会从11条记录开始显示了。
配置好服务器用session吧。刚才那个只是提供保存的思路,所以可以用文件做一下原型来说明。
用文件是不行的,不是坑你。

使用數據庫存儲會話的主要優勢包括持久性、可擴展性和安全性。 1.持久性:即使服務器重啟,會話數據也能保持不變。 2.可擴展性:適用於分佈式系統,確保會話數據在多服務器間同步。 3.安全性:數據庫提供加密存儲,保護敏感信息。

在PHP中實現自定義會話處理可以通過實現SessionHandlerInterface接口來完成。具體步驟包括:1)創建實現SessionHandlerInterface的類,如CustomSessionHandler;2)重寫接口中的方法(如open,close,read,write,destroy,gc)來定義會話數據的生命週期和存儲方式;3)在PHP腳本中註冊自定義會話處理器並啟動會話。這樣可以將數據存儲在MySQL、Redis等介質中,提升性能、安全性和可擴展性。

SessionID是網絡應用程序中用來跟踪用戶會話狀態的機制。 1.它是一個隨機生成的字符串,用於在用戶與服務器之間的多次交互中保持用戶的身份信息。 2.服務器生成並通過cookie或URL參數發送給客戶端,幫助在用戶的多次請求中識別和關聯這些請求。 3.生成通常使用隨機算法保證唯一性和不可預測性。 4.在實際開發中,可以使用內存數據庫如Redis來存儲session數據,提升性能和安全性。

在無狀態環境如API中管理會話可以通過使用JWT或cookies來實現。 1.JWT適合無狀態和可擴展性,但大數據時體積大。 2.Cookies更傳統且易實現,但需謹慎配置以確保安全性。

要保護應用免受與會話相關的XSS攻擊,需採取以下措施:1.設置HttpOnly和Secure標誌保護會話cookie。 2.對所有用戶輸入進行輸出編碼。 3.實施內容安全策略(CSP)限制腳本來源。通過這些策略,可以有效防護會話相關的XSS攻擊,確保用戶數據安全。

优化PHP会话性能的方法包括:1.延迟会话启动,2.使用数据库存储会话,3.压缩会话数据,4.管理会话生命周期,5.实现会话共享。这些策略能显著提升应用在高并发环境下的效率。

theSession.gc_maxlifetimesettinginphpdeterminesthelifespanofsessiondata,setInSeconds.1)它'sconfiguredinphp.iniorviaini_set().2)abalanceisesneededeededeedeedeededto toavoidperformance andunununununexpectedLogOgouts.3)

在PHP中,可以使用session_name()函數配置會話名稱。具體步驟如下:1.使用session_name()函數設置會話名稱,例如session_name("my_session")。 2.在設置會話名稱後,調用session_start()啟動會話。配置會話名稱可以避免多應用間的會話數據衝突,並增強安全性,但需注意會話名稱的唯一性、安全性、長度和設置時機。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)