INNODB的数据是存储在%datadir%ibdata1 文件中的,FRM文件只保存表的结构和定义。所以需要COPY之
Windows 下制作免安装的 MySQL 简化版
1、首先下载免安装包 mysql-noinstall-5.1.54-win32.zip(其它版本类似)
2、复制 bin 、data 和 share 三个目录和 my-medium.ini 文件到 d:\tools\mysql 目录
修改 my-medium.ini 的名称为 my.ini
保留 bin 目录下的 mysqld.exe 文件,mysqladmin.exe 和 mysql.exe 建议也保留,其它文件是否保留视情况而定
data 和 share 两个目录不需要修改
【注】如果使用 innodb_plugin 功能,还需要复制 lib\plugin\ha_innodb_plugin.dll 文件(保持目录结构)
3、修改配置文件 my.ini 指定基本目录和数据目录
basedir=”d:\tools\mysql ”
datadir=”d:\tools\mysql \data\”
如果使用 innodb_plugin 功能,修改配置文件 my.ini 增加如下配置
ignore-builtin-innodb
plugin-load=innodb=ha_innodb_plugin.dll
innodb_file_format=barracuda
innodb_strict_mode=1
4、安装 MySQL 服务器,将其注册为 Windows 服务
命令行切换到 d:\tools\mysql\bin 目录
执行安装的命令
mysqld.exe –install MySQL5 –defaults-file=”d:/tools/mysql/my.ini”
执行卸载的命令
mysqld –remove MySQL5
PHP读取 excel(.csv, .xls)文件的方法
常用的用PHP读取EXCEL的方法有以下三种,各自有各自的优缺点。个人推荐用第三种方法,因为它可以跨平台使用。
1. 以.csv格式读取
将.xls转换成.csv的文本格式,然后再用PHP分析这个文件,和PHP分析文本没有什么区别。
优点:跨平台,效率比较高、可以读写。
缺点:只能直接使用.csv的文件,如果经常接受.xls二进制文件的话需要手工转换,不能自动化。一个文件只有一个SHEET。
PHP有自带的分析.csv函数:fgetcsv
array fgetcsv ( int $handle [, int $length [, string $delimiter [, string $enclosure]]] )
handle 一个由 fopen()、popen() 或 fsockopen() 产生的有效文件指针。
length (可选)必须大于 CVS 文件内最长的一行。在 PHP 5 中该参数是可选的。如果忽略(在 PHP 5.0.4 以后的版本中设为 0)该参数的话,那么长度就没有限制,不过可能会影响执行效率。
delimiter (可选)设置字段分界符(只允许一个字符),默认值为逗号。
enclosure (可选)设置字段环绕符(只允许一个字符),默认值为双引号。该参数是在 PHP 4.3.0 中添加的。 和 fgets() 类似,只除了 fgetcsv() 解析读入的行并找出 CSV 格式的字段然后返回一个包含这些字段的数组。
fgetcsv() 出错时返回 FALSE,包括碰到文件结束时。
注意: CSV 文件中的空行将被返回为一个包含有单个 null 字段的数组,不会被当成错误。
当然也可以自己手动分析字符串。
<?php$row = 1;$handle = fopen("test.csv","r");while ($data = fgetcsv($handle, 1000, ",")) { $num = count($data); echo " $num fields in line $row:\n"; $row++; for ($c=0; $c < $num; $c++) { echo $data[$c] . "\n"; }}fclose($handle);?>
还可以利用fputcsv函数将行格式化为 CSV 并写入文件指针。
2. ODBC链接数据源
优点:支持多种格式,cvs, xls等。支持读写,使用标准SQL语言,和SQLSERVER、MYSQL数据库几乎完全一样。
缺点:值支持windows服务器
3. PHP自定义类
优点:跨平台。某些类支持写操作。支持.xls二进制文件
常用的类有phpExcelReader、PHPExcel。其中后者支持读写,但是需要php5.2以上版本。
phpExcelReader是专门用来读取文件的。返回一个数组,包含表格的所有内容。
该 class 使用的方法可以参考网站下载回来的压缩档中的 example.php。
不过我下载回来的 (版本 2009-03-30),有两点要注意:
reader.php 中的下面这行要修改
将 require_on
改为 require_on
example.php 中
修改 $da
为 $da
修改 nl2br(htmlentities($da
为 $table_output[$sheet] .= nl2br(htmlspecialchars($da
不然中文会有问题。
繁体的话可以修改为CP950、日文是CP932,具体可参考codepage说明。
修改 $da
这是下载地址:
phpExcelReader:http://sourceforge.net/projects/phpexcelreader/
PHPExcel:http://www.codeplex.com/PHPExcel/Wiki/View.aspx?title=Documents&referringTitle=Home
有时写程序时后台要求把大量数据导入数据库中,比如计算机考试成绩的查询、电话簿的数据等一般都是存放在excel中的,这时我们可把数据导出成csv文 件,然后通过以下程序即可在后台批量导入数据到数据库中。
下面只是主要程序部分:
<?php //定义获取时间函数 function getmicrotime(){ list($usec, $sec) = explode(" ",microtime()); return ((float)$usec + (float)$sec); } ?> <?php $time_start = getmicrotime(); include("db.inc.php");//连接数据库 $db=new testcsv; ?> <?php $handle = fopen ("test.csv","r"); $sql="insert into scores(idcard,names,num,sex,nation,score) values("; while ($data = fgetcsv ($handle, 1000, ",")) { $num = count ($data); for ($c=0; $c < $num; $c++) { if($c==$num-1){$sql=$sql.$data[$c].")";break;} $sql=$sql.$data[$c].","; } print "<br>"; echo $sql."<br>"; $db->query($sql); echo "sql语句执行成功!<br>"; $sql="insert into scores(idcard,names,num,sex,nation,score) values("; } fclose ($handle); $time_end = getmicrotime(); $time = $time_end - $time_start; echo "程序执行时间:".$time."秒"; ?>
PHP去空格方法大全
去掉字符串中的空格 str_replace(‘ ‘,”,$cat_name)
$str = ” This line contains\tliberal \r\n use of?? whitespace.\n\n”;
$str = trim($str);// 首先去掉头尾空格
$str = preg_replace(’/\s(?=\s)/’, ‘’, $str);// 接着去掉两个空格以上的
$str = preg_replace(’/[\n\r\t]/’, ‘ ‘, $str);// 最后将非空格替换为一个空格
使用上面的例子可以去掉所有多余的空格。
首先使用TRim()去头尾空格,
接着用preg_replace()去掉重复的空格。
当中的(?=)表示只匹配后面的空格跟随前面的空格的空格。
<?php $str1="?? tt 七夕快乐!nr"; //这里定义一个字符变量,其中包括"空格","t", 水平制表符,"n",换行符 //这里主要调用trim()函数去除空格等,trim()函数用于去除字符中的""空格,"t"水平制表符"n"换行符,"r"回车符 //"\0"字符串结束符,"xOB"垂直制表符。如果想通过此函数过滤掉特殊的字符,可以制定第二个参数。 echo trim($str1)."<br>"; //这里是去除$str1变量中带有tt的字符 echo trim($str1," tt")."<br>"; //定义变量$str2其中包括"."和空格 $str2="... 情人节快乐!...?? 中国..."; //调用trim()函数去除$str2变量中的空格 echo trim($str2)."<br>"; //ltrim()函数用于去除字符串左边的空格或指定字符串,其默认的字符同trim一样。因为这里指定了第二个参数, //所以只去除$str2变量中左边的"." echo ltrim($str2,".")."<br>"; //ltrim()函数用于去除字符串(右)边的空格或指定字符串,其默认的字符同trim一样。因为这里指定了第二个参数, //所以只去除$str2变量中左边的"." echo rtrim($str2,".")."<br>"; ?> <?php echo substr("today is father day!",0)."<br>"; echo substr("today is father day!",6,2)."<br>";//这里只截取字符串中第6字符开始截取,并只截取2个字符 echo substr("today is father day!",-5,5)."<br>";//这里从字符串的倒数第5个字符开始截取,截取5个字符 echo substr("today is father day!",0,-5)."<br>";//这里只截取字符串中的首个字符开始截取,截取到字符串的倒数第5个 echo substr("today is father day!",-5,-1)."<br>";//这里从字符串的倒数第5个字符开始截取,截取倒数第一个字符 ?>
PHP彩蛋入侵
关于“PHP彩蛋”的说法也许很多老PHPer已经都知道或听说了,好像是早在PHP4版本的时候就有彩蛋了,挺好玩儿的,可能近年来逐渐被人们遗忘了,其实彩蛋功能在PHP脚本引擎默认情况下是开启。
下面就用Discuz官方论坛做一下测试:
http://www.discuz.net/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42
http://www.discuz.net/?=PHPE9568F35-D428-11d2-A769-00AA001ACF42
http://www.discuz.net/?=PHPE9568F36-D428-11d2-A769-00AA001ACF42
http://www.discuz.net/?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000
如上4个链接加红色的部分是PHP源码/ext/standard/info.h中定义的GUID值,如下图所示
关于PHP彩蛋这个玩法已经被国外的某些Web漏洞扫描器(例如:HP WebInspect)所使用了,用其来探测被扫描的网站使用的是何种Web开发语言。其实在渗透测试过程中经常遇见某些网站难以辨别出使用了何种Web开发语言,因为有些网站采用动态脚本生成纯静态HTML页或者是采用URL重写实现伪静态页面,如果网站使用的是PHP开发的话,可以尝试使用彩蛋的探测法,在很多情况下可以一针见血的鉴定出来,因为默认情况下彩蛋的功能在php.ini中是开启的,当然如果不想让别人通过彩蛋的方式来获取网站的敏感信息的话,那就在php.ini中将expose_php = Off即可!
看完上面这些可能有些人会说既然php.ini中的expose_php = On,那么直接抓包看看http头信息不就OK了,可是某些大站点Web服务器的前面都是有反向代理服务器的,所以还不能完全依赖于捕获http头中的信息。
mysql密码找回
1、cmd进入命令行,切换到mysql的安装目录(本机mysql安装路径D:\MySQL)
验证win7 win8是否激活的方法
方法一.直接打开WIN7 Activation点击”点击验证”(推荐);
方法二.在”运行”里输入 slmgr.vbs -dli 并回车;
方法二.在”运行”里输入 slmgr.vbs -xpr 并回车;
方法二.在”运行”里输入 winver 并回车;
方法四.在”运行”里输入 slmgr.vbs -dlv 并回车;
方法五.右键我的电脑属性 查看是否处于激活状态.
完美去掉Discuz x1.5中powered by discuz!
标题中的版权
在原来的discuz X1版本中,标题中去掉“Powered by Discuz!”版权标识很容易,只需要修改模板文件的头部公用文件,将[‘bbname’] – <!–{/if}–> Powered by Discuz!</title> 中红色部分去掉即可。
但是discuz X1.5直接把- Powered by Discuz!中的 – 放在了变量里,所以删除后,标题一句话结束后会有一个小 – 尾巴,对搜索引擎很不友好,所以也有一个好的办法完美解决,即:
打开\template\default\common\header_common.htm文件,找到<title><!–{if !empty($navtitle)}–>$navtitle – <!–{/if}–><!–{if empty
($nobbname)}–> $_G[‘setting’][‘bbname’] – <!–{/if}–> Powered by Discuz!</title>
更新缓存即可。
关于apache的域名重定向
同志们以后有可能用到域名301重定向,这个是apache的一般配置
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^coolaj.cn$
RewriteRule ^(.*)$ http://www.coolaj.cn$1 [R=301,L]
</IfModule>
这个的意思是吧所有coolaj.cn的请求 301重定向到www.coolaj.cn
这个的前提是apache要开启mod_rewrite(apache的一个模块,是一个严格的Apache配置文件)
详情查看百度百科:http://baike.baidu.com/view/5016366.html?wtp=tt
MySQL复制表结构和内容到另一张表中的SQL
1.复制表结构及数据到新表
CREATE TABLE 新表
SELECT * FROM 旧表
2.只复制表结构到新表
CREATE TABLE 新表
SELECT * FROM 旧表 WHERE 1=2
即:让WHERE条件不成立.
方法二:(低版本的mysql不支持,mysql4.0.25 不支持,mysql5已经支持了)
CREATE TABLE 新表
LIKE 旧表
3.复制旧表的数据到新表(假设两个表结构一样)
INSERT INTO 新表
SELECT * FROM 旧表
4.复制旧表的数据到新表(假设两个表结构不一样)
INSERT INTO 新表(字段1,字段2,…….)
SELECT 字段1,字段2,…… FROM 旧表