PHP如何进行数据库操作以及防止页面超时和自动刷新页面讲解

韦小宝
发布: 2018-03-01 15:27:51
原创
3228人浏览过

在php开发中对数据库进行操作是非常常见的,我们在一个页面停留长时间不操作会有提示或报错等情况相信大家也都遇到过,那么今天我们就来讲一下如何对数据库进行操作以及防止页面超时吧!

说明:

对数据库进行初始化或修改等操作时:
1、简单的直接使用sql语句完成。
2、稍微复杂点,可以通过执行php代码来完成(读数据再写/修改数据)。

使用php代码的时候(非命令行),我们可能会遇到网页超时的情况,解决方法一般有三种:
1、设置php.ini:

max_execution_time
登录后复制

2、代码中添加:

立即学习PHP免费学习笔记(深入)”;

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如何进行数据库操作以及防止页面超时和自动刷新页面讲解的详细内容,更多请关注php中文网其它相关文章!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号