时间:2021-07-01 10:21:17 帮助过:3人阅读
说明:
对数据库进行初始化或修改等操作时:
1、简单的直接使用sql语句完成。
2、稍微复杂点,可以通过执行php代码来完成(读数据再写/修改数据)。
使用php代码的时候(非命令行),我们可能会遇到网页超时的情况,解决方法一般有三种:
1、设置php.ini:
- max_execution_time
2、代码中添加:
- set_time_limit(0);
- //0表示不超时
3、页面自动刷新,将整个工作分批完成:
页面可以随着执行的过程变化,比如动态地告诉用户执行到多少了,而不是单页面的等待。
下面,主要整理了一下第三种方式。
页面自动刷新:
页面刷新<==>页面跳转,当某个条件成立时停止跳转。
页面跳转:输出meta标签来实现
- if ($flag) {
- //跳转页面,xxx为该php文件的文件名
- echo '<meta http-equiv="refresh" content="0;url=xxx.php?">';
- } else {
- //刷新停止
- }
刷新同时传递参数,控制数据库操作:
在meta的url中,我们可以使用Get的方式来传递一个参数。
这个参数可以用来变化SQL语句的limit,实现每次执行一部分的功能。
- $page = isset($_GET['page']) ? $_GET['page'] : 0;
- //用$page构造sql语句或其它功能
- //数据库操作或其它功能
- //设置$flag
- $flag = $pdostatement->rowCount() == 0; //比如数据库影响行数
- //决定 跳转刷新 或 停止
- if ($flag) {
- //跳转页面,xxx为该php文件的文件名
- echo '<meta http-equiv="refresh" content="0;url=xxx.php?page=' . ++$page . '">';
- } else {
- //刷新停止
- }
假设,对某字段数据+1,具体实现:
现在对SQL还不是很熟悉。
如果只是limit限制,可能会出现:已被查询过的数据 再次被查询出来 执行第二遍的情况?
个人觉得,最好加上主键的order by
- <meta charset="UTF-8">
- <?php
- $page = isset($_GET['page']) ? $_GET['page'] : 0;
- $step = 50; //每次刷新更新 50条数据
- $limit_start = $page * 50;
- $dsn = "mysql:host=localhost;dbname=db_name";
- try {
- $pdo = new PDO($dsn, "root", "123456");
- $sql = <<<SQL
- SELECT col_num, col_id
- FROM table_name
- ORDER by col_id
- LIMIT {$limit_start},{$step}
- SQL;
- $pdostatement = $pdo->prepare($sql);
- $pdostatement->execute();
- $pdostatement->setFetchMode(PDO::FETCH_NUM);
- $num = $pdostatement->rowCount();
- if ($num == 0) {
- echo "sql执行完毕";
- } else {
- echo "正在执行sql<br>";
- $sql_update = "UPDATE table_name ";
- while (list($col_num, $col_id) = $pdostatement->fetch(PDO::FETCH_NUM)) {
- $col_name++;
- $sql_update .= <<<SQL
- SET col_name = "{$col_num}"
- WHERE col_id = "{$col_id}" ,
- SQL;
- }
- $sql_update = substr($sql_update, 0, -1); //去掉最后的逗号
- $pdostatement_update = $pdo->prepare($sql_update);
- $pdostatement_update->execute();
- $num_update = $pdostatement_update->rowCount();
- if ($num_update == 0) {
- echo $gfc_id . "修改出错,停止更新";
- } else {
- echo '<meta http-equiv="refresh" content="0;url=jianshu.php?page=' . (++$page) . '">';
- }
- }
- } catch (PDOException $e) {
- echo "数据库连接失败" . $e->getMessage(); //连接失败,获取错误信息
- exit;
- }
以上就是PHP如何进行数据库操作以及防止页面超时和自动刷新页面的所有内容,这些方法在我们的PHP开发中都是很长用的也是很长见的。
类似文章:
php自动刷新页面,该如何处理
php数据库操作以及连接数据库教程
以上就是PHP如何进行数据库操作以及防止页面超时和自动刷新页面讲解的详细内容,更多请关注Gxl网其它相关文章!