置顶随笔

[置顶]执子之手--与子偕老

 

谁,吻我之眸,遮我半世流离;

谁,抚我之面,慰我半世哀伤;

谁,携我之心,融我半世冰霜;

谁,扶我之肩,驱我一世沉寂。

谁,唤我之心,掩我一生凌轹。

谁,弃我而去,留我一世独殇;

谁,可明我意,使我此生无憾;

谁,可助我臂,纵横万载无双;

谁,可倾我心,寸土恰似虚弥; 

谁,可葬吾怆,笑天地虚妄,吾心狂。

伊,覆我之唇,祛我前世流离; 

伊,揽我之怀,除我前世轻浮。

  

执子之手,陪你痴狂千生;

深吻子眸,伴你万世轮回。

执子之手,共你一世风霜;

吻子之眸,赠你一世深情。

我, 牵尔玉手, 收你此生所有;

我, 抚尔秀颈, 挡你此生风雨。 

予,挽子青丝,挽子一世情思;

予,执子之手,共赴一世情长;

曾,以父之名,免你一生哀愁;

曾,怜子之情,祝你一生平安!

 

posted @ 2011-08-25 17:38 青蛙學堂 阅读(37) | 评论 (1)编辑 收藏

2012年5月17日

php-函數大全

Abs: 取得绝对值。

Acos: 取得反余弦值。

ada_afetch: 取得资料库的传回列。

ada_autocommit: 开关自动更动功能。

ada_close: 关闭 Adabas D 连结。

ada_commit: 更动 Adabas D 资料库。

ada_connect: 连结至 Adabas D 资料库。

ada_exec: 执行 SQL 指令。

ada_fetchrow: 取得传回一列。

ada_fieldname: 取得栏位名称。

ada_fieldtype: 取得栏位资料形态。

ada_freeresult: 释出传回资料的记忆体。

ada_numfields: 取得栏位数目。

ada_numrows: 取得传回列数目。

ada_result: 取得传回资料。

ada_resultall: 传回 javascript表格资料。

ada_rollback: 撤消当前交易。

AddSlashes: 字串加入斜线。

apache_lookup_uri: 获得所有的 URI 相关资讯。

apache_note: 获得及设定阿帕契伺服器的请求纪录。

array: 建立一个新的阵列。

array_walk: 让使用者自订函数能处理阵列中的每一个元素。

arsort: 将阵列的值由大到小排序。

Asin: 取得反正弦值。

asort: 将阵列的值由小到大排序。

aspell_check: 检查一个单字。

aspell_check-raw: 检查一个单字,即使拼错也不改变或修正。

aspell_new: 载入一个新的字典。

aspell_suggest: 检查一个单字,并提供拼字建议。

Atan: 取得反正切值。

Atan2: 计算二数的反正切值。

base64_decode: BASE64 编码字串解码。

base64_encode: 将字串以 BASE64 编码。

basename: 传回不含路径的档案字串。

base_convert: 转换数字的进位方式。

bcadd: 将二个高精确度数字相加。

bccomp: 比较二个高精确度数字。

bcdiv: 将二个高精确度数字相除。

bcmod: 取得高精确度数字的余数。

bcmul: 将二个高精确度数字相乘。

bcpow: 求一高精确度数字次方值。

bcscale: 设定程式中所有 BC 函式库的内定小数点位数。

bcsqrt: 求一高精确度数字的平方根。

bcsub: 将二个高精确度数字相减。

bin2hex: 二进位转成十六进位。

BinDec: 二进位转成十进位。

Ceil: 计算大于指定数的最小整数

chdir: 改变目录。

checkdate: 验证日期的正确性。

checkdnsrr: 检查指定网址的 DNS 记录。

chgrp: 改变档案所属的群组。

chmod: 改变档案的属性。

Chop: 去除连续空白。

chown: 改变档案的拥有者。

Chr: 传回序数值的字元。

chunk_split: 将字串分成小段。

clearstatcache: 清除档案状态快取。

closedir: 关闭目录 handle

closelog: 关闭系统纪录。

connection_aborted: 若连结中断则传回 true

connection_status: 取得连线状态。

connection_timeout: 若超过 PHP 程式执行时间则传回 true

convert_cyr_string: 转换古斯拉夫字串成其它字串。

copy: 复制档案。

Cos: 余弦计算。

count: 计算变数或阵列中的元素个数。

crypt: 将字串用 DES 编码加密。

current: 传回阵列中目前的元素。

date: 将伺服器的时间格式化。

dbase_add_record: 加入资料到 dBase 资料表。

dbase_close: 关闭 dBase 资料表。

dbase_create: 建立 dBase 资料表。

dbase_delete_record: 删除 dBase 资料表的资料。

dbase_get_record: 取得 dBase 资料表的资料。

dbase_numfields: 取得 dBase 资料表的栏位数。

dbase_numrecords: 取得 dBase 资料表的列数。

dbase_open: 开启 dBase 资料表。

dbase_pack: 清理 dBase 资料表。

dba_close: 关闭资料库。

dba_delete: 删除指定资料。

dba_exists: 检查键是否存在。

dba_fetch: 取回指定资料。

dba_firstkey: 取回首笔键值。

dba_insert: 加入资料。

dba_nextkey: 取回下笔键值。

dba_open: 开启资料库连结。

dba_optimize: 最佳化资料库。

dba_popen: 开启并保持资料库连结。

dba_replace: 更动或加入资料。

dba_sync: 资料库同步化。

dblist: 取得 DBM 的资讯。

dbmclose: 关闭 DBM 资料库。

dbmdelete: 删除指定资料。

dbmexists: 检查键是否存在。

dbmfetch: 取回指定资料。

dbmfirstkey: 取回首笔键名。

dbminsert: 加入资料。

dbmnextkey: 取回下笔键值。

dbmopen: 开启 DBM 资料库连结。

dbmreplace: 更动或加入资料。

debugger_off: 关闭内建的 PHP 除错器。

debugger_on: 使用内建的 PHP 除错器。

DecBin: 十进位转二进位。

DecHex: 十进位转十六进位。

DecOct: 十进位转八进位。

delete: 无用的项目。

die: 输出讯息并中断 PHP 程式。

dir: 目录类别物件。

dirname: 取得路径中的目录名。

diskfreespace: 取得目录所在的剩余可用空间。

dl: 载入 PHP 扩充模组。

doubleval: 变数转成倍浮点数型态。

each: 传回阵列中下一个元素的索引及值。

easter_date: 计算复活节日期。

easter_days: 计算复活节与三月廿一日之间日期数。

echo: 输出字串。

empty: 判断变数是否已设定。

end: 将阵列的内部指标指到最后的元素。

ereg: 字串比对剖析。

eregi: 字串比对剖析,与大小写无关。

eregi_replace: 字串比对剖析并取代,与大小写无关。

ereg_replace: 字串比对剖析并取代。

error_log: 送出一个错误讯息。

error_reporting: 设定错误讯息回报的等级。

escapeshellcmd: 除去字串中的特殊符号。

eval: 将值代入字串之中。

exec: 执行外部程式。

exit: 结束 PHP 程式。

Exp: 自然对数 e 的次方值。

explode: 切开字串。

extract: 汇入阵列到符号表。

fclose: 关闭已开启的档案。

FDF_close: 关闭 FDF 文件。

FDF_create: 建立新的 FDF 文件。

FDF_get_file: 取得 /F 键的值。

FDF_get_status: 取得 /STATUS 键的值。

FDF_get_value: 取得栏位的值。

FDF_next_field_name: 下一栏位的名称。

FDF_open: 打开 FDF 文件。

FDF_save: FDF 文件存档。

FDF_set_ap: 设定显示栏位。

FDF_set_file: 设定 /F 键。

FDF_set_status: 设定 /STATUS 键。

FDF_set_value: 设定栏位的值。

feof: 测试档案指标是否指到档尾。

fgetc: 取得档案指标所指的字元。

fgetcsv: 取得档案指标所指行,并剖析 CSV 栏位。

fgets: 取得档案指标所指的行。

fgetss: 取得档案指标所指的行,并去掉 HTML 语言标记。

file: 将档案全部读入阵列变数中。

fileatime: 取得档案最后的存取时间。

filectime: 取得档案最后的改变时间。

filegroup: 取得档案所属的群组。

fileinode: 取得档案的 inode 值。

filemtime: 取得档案最后的修改时间。

fileowner: 取得档案的拥有者。

fileperms: 取得档案的权限设定。

filepro: 读取 FilePro Map 档。

filepro_fieldcount: 取得栏位数目。

filepro_fieldname: 取得栏位名称。

filepro_fieldtype: 取得栏位型态。

filepro_fieldwidth: 取得栏位宽度。

filepro_retrieve: 取得指定储存格资料。

filepro_rowcount: 取得列数目。

filesize: 获得档案的大小。

filetype: 获得档案的型态。

file_exists: 检查档案是否存在。

flock: 锁住档案。

Floor: 计算小于指定数的最大整数。

flush: 清出输出缓冲区。

fopen: 开启档案或者 URL

fpassthru: 输出所有剩余资料。

fputs: 写到档案指标。

fread: 位元组的方式读取档案。

FrenchToJD: 将法国共和历法转换成为凯撒日计数。

fseek: 移动档案指标。

fsockopen: 打开网路的 Socket 连结。

ftell: 取得档案读写指标位置。

ftp_cdup: 回上层目录。

ftp_chdir: 改变路径。

ftp_connect: 开启 FTP 连结。

ftp_delete: 将档案删除。

ftp_fget: 下载档案,并存在已开的档中。

ftp_fput: 上传已开启档案。

ftp_get: 下载档案。

ftp_login: 登入 FTP 伺服器。

ftp_mdtm: 获得指定档案的最后修改时间。

ftp_mkdir: 建新目录。

ftp_nlist: 列出指定目录中所有档案。

ftp_pasv: 切换主被动传输模式。

ftp_put: 上传档案。

ftp_pwd: 取得目前所在路径。

ftp_quit: 关闭 FTP 连线。

ftp_rawlist: 详细列出指定目录中所有档案。

ftp_rename: 将档案改名。

ftp_rmdir: 删除目录。

ftp_size: 获得指定档案的大小。

ftp_systype: 显示伺服器系统。

function_exists: 查核函式是否已定义。

fwrite: 二进位位元方式写入档案。

getallheaders: 获得所有 HTTP 变数值。

getdate: 获得时间及日期资讯。

getenv: 取得系统的环境变数

gethostbyaddr: 传回机器名称。

gethostbyname: 传回 IP 网址。

gethostbynamel: 传回机器名称的所有 IP

GetImageSize: 取得图片的长宽。

getlastmod: 传回该网页的最后修改时间。

getmxrr: 取得指定网址 DNS 记录之 MX 栏位。

getmyinode: 传回该网页的 inode 值。

getmypid: 传回 PHP 的行程代号。

getmyuid: 传回 PHP 的使用者代码。

getrandmax: 乱数的最大值。

getrusage: 传回系统资源使用率。

gettimeofday: 取得目前时间。

gettype: 取得变数的型态。

get_cfg_var: 取得 PHP 的设定选项值。

get_current_user: 取得 PHP 行程的拥有者名称。

get_magic_quotes_gpc: 取得 PHP 环境变数 magic_quotes_gpc 的值。

get_magic_quotes_runtime: 取得 PHP 环境变数 magic_quotes_runtime 的值。

get_meta_tags: 抽出档案所有 meta 标记的资料。

gmdate: 取得目前与 GMT 差后的时间。

gmmktime: 取得 UNIX 时间戳记的格林威治时间。

GregorianToJD: 将格里高里历法转换成为凯撒日计数。

gzclose: 关闭压缩档。

gzeof: 判断是否在压缩档尾。

gzfile: 读压缩档到阵列中。

gzgetc: 读压缩档中的字元。

gzgets: 读压缩档中的字串。

gzgetss: 读压缩档中的字串,并去掉 HTML 指令。

gzopen: 开启压缩档。

gzpassthru: 解压缩指标后全部资料。

gzputs: 资料写入压缩档。

gzread: 压缩档读出指定长度字串。

gzrewind: 重设压缩档指标。

gzseek: 设压缩档指标至指定处。

gztell: 取得压缩档指标处。

gzwrite: 资料写入压

posted @ 2012-05-17 08:14 青蛙學堂 阅读(0) | 评论 (0)编辑 收藏

2012年5月15日

PHP中文乱码的常见解决方法总结

 
关键词:PHP

  PHP中文乱码是PHP开发中的常见问题之一。PHP中文乱码有时发生在网页本身,有些产生在于MySQL交互的过程中,有时与操作系统有关。下面进行一番总结。

  一.首先是PHP网页的编码

  1. php文件本身的编码与网页的编码应匹配

  a. 如果欲使用gb2312编码,那么php要输出头:header(“Content-Type: text/html; charset=gb2312"),静态页面添加,所有文件的编码格式为ANSI,可用记事本打开,另存为选择编码为ANSI,覆盖源文件。

  b. 如果欲使用utf-8编码,那么php要输出头 :header(“Content-Type: text/html; charset=utf-8"),静态页面添加,所有文件的编码格式为utf-8。保存为utf-8可能会有点麻烦,一般utf-8文件开头会有BOM,如果使用 session就会出问题,可用editplus来保存,在editplus中,工具->参数选择->文件->UTF-8签名,选择总是删除,再保存就可以去掉BOM信息了。

  2. php本身不是Unicode的,所有substr之类的函数得改成mb_substr(需要装mbstring扩展);或者用iconv转码。

  二.PHP与Mysql的数据交互

  PHP与数据库的编码应一致

  1. 修改mysql配置文件my.ini或my.cnf,mysql最好用utf8编码

  [mysql]

  default-character-set=utf8

  [mysqld]

  default-character-set=utf8

  default-storage-engine=MyISAM

  在[mysqld]下加入:

  default-collation=utf8_bin

  init_connect='SET NAMES utf8'

  2. 在需要做数据库操作的php程序前加mysql_query("set names '编码'");,编码和php编码一致,如果php编码是gb2312那mysql编码就是gb2312,如果是utf-8那mysql编码就是 utf8,这样插入或检索数据时就不会出现乱码了

  三.PHP与操作系统相关

  Windows和Linux的编码是不一样的,在Windows环境下,调用PHP的函数时参数如果是utf-8编码会出现错误,比如 move_uploaded_file()、filesize()、readfile()等,这些函数在处理上传、下载时经常会用到,调用时可能会出现下面的错误:

  Warning: move_uploaded_file()[function.move-uploaded-file]:failed to open stream: Invalid argument in ...

  Warning: move_uploaded_file()[function.move-uploaded-file]:Unable to move '' to '' in ...

  Warning: filesize() [function.filesize]: stat failed for ... in ...

  Warning: readfile() [function.readfile]: failed to open stream: Invalid argument in ..

  在Linux环境下用gb2312编码虽然不会出现这些错误,但保存后的文件名出现乱码导致无法读取文件,这时可先将参数转换成操作系统识别的编码,编码转换可用mb_convert_encoding(字符串,新编码,原编码)或iconv(原编码,新编码,字符串),这样处理后保存的文件名就不会出现乱码,也可以正常读取文件,实现中文名称文件的上传、下载。

  其实还有更好的解决方法,彻底与系统脱离,也就不用考虑系统是何编码。可以生成一个只有字母和数字的序列作为文件名,而将原来带有中文的名字保存在数据库中,这样调用move_uploaded_file()就不会出现问题,下载的时候只需将文件名改为原来带有中文的名字。实现下载的代码如下

  header("Pragma: public");

  header("Expires: 0");

  header("Cache-Component: must-revalidate, post-check=0, pre-check=0");

  header("Content-type: $file_type");

  header("Content-Length: $file_size");

  header("Content-Disposition: attachment; filename=\"$file_name\"");

  header("Content-Transfer-Encoding: binary");

  readfile($file_path);

  $file_type是文件的类型,$file_name是原来的名字,$file_path是保存在服务上文件的地址。

  四.再来总结一下为什么会乱码

  一般来说,乱码的出现有2种原因,首先是由于编码(charset) 设置错误,导致浏览器以错误的编码来解析,从而出现了满屏乱七八糟的“天书”,其次是文件被以错误的编码打开,然后保存,比如一个文本文件原先是GB2312 编码的,却以UTF-8 编码打开再保存。要解决上述乱码问题,首先需要知道开发中哪些环节涉及到了编码:

  1、文件编码:指的是页面文件(.html,.php等)本身是以何种编码来保存的。记事本和Dreamweaver 在打开页面时候会自动识别文件编码因而不太会出问题。而ZendStudio却不会自动识别编码,它只会根据首选项的配置固定以某种编码打开文件,如果工作时候一不注意,用错误编码打开文件,做了修改之后一保存,乱码就出现了(我深有体会)。

  2、页面申明编码:在HTML代码HEAD里面,可以用 来告诉浏览器网页采用了什么编码,目前中文网站开发中XXX主要用的是GB2312和UTF-8 两种编码。

  3、数据库连接编码:指的是进行数据库操作时候以哪种编码与数据库传输数据,这里需要注意的是不要与数据库本身的编码混淆,比如MySQL内部默认是latin1编码,也就是说Mysql是以latin1编码来存储数据,以其他编码传输给Mysql的数据会被转换成latin1编码。

  知道了WEB开发中哪些地方涉及到了编码,也就知道了乱码产生的原因:上述3项编码设置不一致,由于各种编码绝大部分是兼容ASCII的,所以英文符号不会出现,中文就倒霉了。

  五.决战一些常见的错误情况与解决:

  1、数据库采用UTF8 编码,而页面申明编码是GB2312 ,这是最常见的产生乱码的原因。这时候在PHP脚本里面直接SELECT数据出来的就是乱码,需要在查询前先使用: mysql_query("SET NAMES GBK"); 来设定MYSQL连接编码,保证页面申明编码与这里设定的连接编码一致(GBK是GB2312的扩展 )。如果页面是UTF-8 编码的话,可以用: mysql_query("SET NAMES UTF8");

  注意是UTF8而不是一般用的UTF-8。假如页面申明的编码与数据库内部编码一致可以不设定连接编码。

  注:事实上MYSQL的数据输入输出比上面讲的更复杂一些,MYSQL配置文件my.ini中定义了2个默认编码,分别是[client]里的default -character-set和[mysqld] 里的default-character-set 来分别设定默认时候客户端连接和数据库内部所采用的编码。我们上面指定的编码其实是MYSQL客户端连接服务器时候的命令行参数character_set_client,来告诉MYSQL服务器接受到的客户端数据是什么编码的,而不是采用默认编码。

  2、页面申明编码与文件本身编码不一致,这种情况很少发生,因为如果编码不一致美工做页面时候在浏览器看到的就是乱码了。更多时候是发布以后修改一些小BUG,以错误编码打开页面然后保存导致的。或者是用某些FTP软件直接在线修改文件,比如CuteFTP,由于软件编码配置错误而导致转换错了编码。

  3、一些租用虚拟主机的朋友,明明上述3项编码都设置正确了还是有乱码。比方说网页是GB2312 编码的,IE等浏览器打开却总是识别成UTF-8 ,网页HEAD里面已经申明是GB2312 了,手动修改浏览器编码为GB2312 后页面显示正常。产生原因是服务器Apache设定了服务器全局的默认编码,在httpd.conf里面加了AddDefaultCharset UTF-8 。这时候服务器会首先发送HTTP头给浏览器,其优先级比页面里申明编码高,自然浏览器就识别错了。解决办法有2个,请管理员在配置文件自己的虚机里加上一条AddDefaultCharset GB2312 来覆盖全局配置,或者在自己目录的.htaccess里配置。

  总结:总之一句话,要解决PHP中文乱码最好最快的解决办法就是,页面申明的编码与数据库内部编码一致,如果页面申请的页码与数据库内部编码不一致时,就设定连接编码 ,mysql_query("SET NAMES XXX "); XXX为连接编码.一定可以解决乱码的问题.

posted @ 2012-05-15 09:25 青蛙學堂 阅读(0) | 评论 (0)编辑 收藏

2012年5月14日

SQLserver数据库导入Mysql数据库

SQLserver数据库导入Mysql数据库的体验

因工作需要,要将存放在sql server数据库中的数据全部导入到mysql数据库中,在网上搜集相关资料,找到两种方法,现在分别谈谈对他们的看法。
第一种是安装mysql ODBC,利用sql server的导出功能,选择mysql数据源,进行数据的直接导出,这种方法很简便,但是针对实际应用有很多弊端,最主要体现就是数据类型问题,首先,sql server数据库中
的ntext,image等数据类型的数据无法直接写入到mysql数据库中,据说只要稍加改动就可以,可惜偶这只菜鸟还没想到如何改动,其次,因为偶在mysql中的数据库设计中将时间都设成int型(保存的是时间戳),所以在数据导过来后,就会出现冲突,再次,这种方法生成的mysql数据表的字段类型都不很合适,所以此种方法我觉得不能提倡。

第二种是利用phpasp脚本来实现数据的导入功能,这种方法需要编写程序,但灵活性大,操作也不是那么困难,一切都尽在你的掌握之中,现简单介绍一下该方法
前提条件是你的mysql环境已经搭建好了,先建好目标数据库,再将所有的表结构用sql语句生成,现在万事具备,只缺数据了。

可以通过下面的php脚本来实现sql server中mydb数据库的user表中数据向mysql中mydb数据库导入
<?
$cnx = odbc_connect('web', 'admin', '123456');//'web'是sqlserver中mydb的数据源名,'admin'是访问mydb的用户名,'123456'是访问mydb的密码
$cur= odbc_exec( $cnx, 'select * from user' );//打开sql server中mydb数据库的user表
$num_row=0;
$conn=mysql_pconnect("localhost","root","123456");// 连接mysql
@mysql_select_db('mydb',$conn) or

die("无法连接到数据库,请与管理员联系!");//打开mysql的mydb数据库
while( odbc_fetch_row( $cur )) //从sql server的mydb库中的user表逐条取出数据,如果对数据进行选择,可在前面的select语句中加上条件判断
{
$num_row++;
$field1 = odbc_result( $cur, 1 ); // 这里的参数i(1,2,3..)指的是记录集中的第i个域,你可以有所选择地进行选取,fieldi得到对应域的值,然后你可以对fieldi进行操作
$field2 = odbc_result( $cur, 2 );
$field3 = odbc_result( $cur, 3 );
$field4 = odbc_result( $cur, 4 );
$field5 = odbc_result( $cur, 5 );
$field6 = odbc_result( $cur, 6 );
$field5 = timetoint($field5); //这里是对sql server中的datetime类型的字段进行相应转换处理,转换成我所需要的int型
$querystring = "insert into user
(id,name,username,password,recdate)
values('$field1','$field2','$field3','$field4','$field5')" ;

mysql_query($querystring,$conn);
}

function timetoint($str){
$arr1=split(" ",$str);
$datestr=$arr1[0];
$timestr=$arr1[1];
$arr_date=split("-",$datestr);
$arr_time=split(":",$timestr);
$year=$arr_date[0];
$month=$arr_date[1];
$day=$arr_date[2];
$hour=$arr_time[0];
$minute=$arr_time[1];
$second=$arr_time[2];
$time_int=mktime($hour,$minute,$second,$month,$day,$year);
return $time_int;
}
?>

将该段脚本存成sql.php,在服务器上执行,就可以将服务器上sql server中mydb数据库的user表中的数据导入到mysql中mydb数据库的user表中去。其他表的操作与此雷同,就不赘述了。

下面再介绍一下asp脚本实现sql server中mydb数据库的数据向mysql中mydb数据库导入
<%
set conn=server.createobject("adodb.connection")
conn.open 'web', 'admin', '123456' // 'web'是sqlserver中mydb的数据源名,'admin'是访问mydb的用户名,'123456'是访问mydb的密码
set rs=server.createobject("adodb.recordset")
sql="select ID,name,username,password,datediff(s,'1970-01-01 00:00:00',recdate)-8*3600,reid,filename,fileContentType,filevalue from senddate" //这条sql语句实现了将datetime类型的recdate字段转化成unix时间戳的int型

rs.open sql,conn,1,3
set conn1=server.createobject("adodb.connection")
conn1.open "myoa","root","q1-d6=7?"
i=1
do while not rs.eof
field1 = rs(0)
field2 = rs(1)
field3 = rs(2)
field4 = rs(3)
field5 = rs(4)
sql1 = "insert into user(ID,name,username,password,recdate)

values("&field1&",'"&field2&"','"&field3&"','"&field4&"',"&field5&")"

conn1.execute sql1
rs.movenext
i=i+1
loop
rs.close
set rs=nothing
conn.close
set conn=nothing
conn1.close
set conn1=nothing

%>

以上两个是分别采用php脚本和asp脚本对user表的数据进行由sql server到mysql的导入其间我采用2种回避的方法来避免ntext,image类型数据的传递,一种是将ntext字段改为nvarchar(4000),因为实际情况,原始数据中该字段的数据长度都未超过4000个字,所以并没有出现数据截断,另一个手段是将image类型数据取出来写到文件中,以文件形式保存,将文件路径存到数据库中,方法见下:

function makeattach(fileContentType,filevalue,i)
select case fileContentType
case "application/msword"
ext="doc"

case "application/vnd.ms-excel"
ext="exl"

case "application/vnd.ms-powerpoint"
ext="pps"

case "application/x-rar-compressed"
ext="rar"

case "application/x-zip-compressed"
ext="zip"

case "image/gif"
ext="gif"

case "image/pjpeg"
ext="jpg"

case "text/plain"
ext="txt"

case else
ext="x"

end select
if ext<>"x" then
set fso=server.createobject("FileSystemObject")
fName="attech"&i&"."&ext
Dir="d:attach"
If fso.FileExists(Dir & fName) Then fso.deletefile Dir & fName
If fName<>"" AND NOT fso.FileExists(Dir & fName) Then
Set strm1=Server.CreateObject("ADODB.Stream")
strm1.Open
strm1.Type=1 'Binary
strm1.Write filevalue
strm1.SaveToFile Dir & fName,2
Set strm1=Nothing
end if
makeattach=fName
end if
end function

这个函数有3个输入参数,第一个是文件的contentType,第二个是文件的二进制数值,第三个是个可以区别文件名的变量,先根据contentType确定所存文件的后缀名,然后就是将二进制数值保存成指定文件名的文件,并将文件名作为输出参数返回,将返回的参数作为数据写到mysql的数据库中保存。
时间匆忙,先总结到这里,希望这些文字能对有需要的人有些帮助,少走些弯路,感谢您的阅读。:)

posted @ 2012-05-14 10:54 青蛙學堂 阅读(1) | 评论 (0)编辑 收藏

dtswizard--sqlserver2005数据导入导出工具

dtswizard--sqlserver2005数据导入导出工具

posted @ 2012-05-14 10:48 青蛙學堂 阅读(3) | 评论 (0)编辑 收藏

2012年5月13日

PHP-APACHE-设置

 

 

注:此设定对应APACHE PHP VC6 线程安全程式。

 

1)、将PHP的压缩包zip解压到一个目录下,推荐:“E:\PHP”,pharmar的是D:\Program Files\Php

2)、将PHP目录(E:\PHP)下的 php.ini-dist 文件重命名为 php.iniPHP的配置文件就是它,修改以下几个地方
extension_dir="E:\ Php\ext" ,指向php文件夹下放置“php_*.dll”文件的路径。PHP4PHP5的路径在这里有所区别。
doc_root="E:\ Apache" ,指向前面apache设置的首页位置;
default_charset="gb2312" ,修改默认字符集,这里,如果前面有分号“;”,去掉这个分号;

register_globals=Off 改为 register_globals=On ,使传递全局变量有效;

extension=php_dba.dll 如果前面有分号,取消分号,以下同;

extension=php_dbase.dll

extension=php_gd2.dll GD库做图,一般用于图形验证码;

extension=php_mysql.dll 用于连接MYSQL数据库;

3) 、修改好后把 php.ini 文件复制到 C\WINDOWS\ 目录里:

4)、将PHP目录下的 php5ts.dll 文件拷贝到 C:\WINDOWS\system32 目录。

5)、最后修改 Apache httpd.conf 文件。在该文件的末尾添加如下2行,表示以模块方式安装PHP进入Apache

LoadModule php5_module E:/Php/php5apache2_2.dll

AddType application/x-httpd-php .php

 

注意:第一行的目录路径要更新为当前版本的apache动态链接库,比如这里我使用的是apache2.2.17版本和php5.3.6,那这个文件必须是php5apache2_2.dll,而不能是php5apache.dllphp5apache2.dll等。第二行为php脚步的后缀。

php4版中,需要添加一行 AddType mod_php4.c,而在php5中,就不需要这样的一行 AddType mod_php5.c了,php5已经集成,否则 apache 启动不了。

 

以上就完成了apachephp的配置过程了,重启apache。在服务器的默认目录“E:\ Apache\htdocs”里新建文件index.php,写上如下代码:

<?php

phpinfo();

?>

在浏览器地址栏里输入 http://127.0.0.1/ http://localhost/ ,你就会看到php版本信息了。到此为止,phpapache就已经成功的安装了。

 

这里有个细节:apache的配置文件 httpd.conf 中的目录分割符号是“/”,而 PHP 的配置文件 php.ini 里的目录则要求是反斜线 \”,不要搞混了哦。

 

posted @ 2012-05-13 08:38 青蛙學堂 阅读(1) | 评论 (1)编辑 收藏

2012年5月9日

您试图从目录中执行CGI、ISAPI 或其他可执行程序,但该目录不允许执行程序

 

您试图从目录中执行CGIISAPI 或其他可执行程序,但该目录不允许执行程序

本人使用WIN2003 INTERNET信息服务(IIS)管理器建立一个网站虚拟目录,结果浏览网页时出现错误,错误提示信息大体如此: 

  该页无法显示 

  您试图从目录中执行 CGIISAPI 或其他可执行程序,但该目录不允许执行程序。 

  请尝试以下操作: 

*
如果您认为该目录应该允许执行访问权限,请与网站管理员联系。 

  HTTP 错误 403.1 - 禁止访问:执行访问被拒绝。 
  Internet 信息服务 (IIS) 

  技术信息(为技术支持人员提供) 

*
转到 Microsoft 产品支持服务并搜索包括“HTTP”“403”的标题。 
*
打开“IIS 帮助(可在 IIS 管理器 (inetmgr) 中访问),然后搜索标题为配置 ISAPI 扩展配置 CGI 应用程序使用网站权限保护站点关于自定义错误消息的主题。 
*
IIS 软件开发工具包 (SDK) MSDN Online Library 中,搜索标题为“Developing ISAPI Extensions”“ISAPI and CGI”“Debugging ISAPI Extensions and Filters”的主题。 

  
以下是解决的方法: 

  单击操作系统的开始程序管理工具→Interneter服务器管理,在IIS中选择您的站点然后右键属性,在虚拟目录选项中,查看执行权限是否设置为,这里改成纯脚本保存即可。 

  如下:

如果还不成,那么,在点击上图中的创建按钮,创建一个应用程序名称,这样就可以了! 

通过上述两步的操作,就没有问题了,我是这样来解决的!

 

 

 

 

 

 

 

 

posted @ 2012-05-09 08:47 青蛙學堂 阅读(2) | 评论 (0)编辑 收藏

2012年5月7日

phpdesigner--工具

  phpdesigner
  php在能嵌入到其他网上语言和技术。phpdesigner 不仅支持php ,也支持其他网络语言像html ,xhtml, xml,css和javascript , vbscript,java, c #,perl , python等!
  由于可以搭配使用的相关免费资源相当的多,PHP 的网页设计越来越多人在学习了,MPS PHP DESIGNER 是针对 PHP 网页的编写所设计的程序,它内建一系列的指令码、PHP4 原始码数据库、语法高亮度显示功能、FTP 客户端...等,不管您是 PHP 网页设计高手,或者是刚入门的新手,您都可以使用这套软件来帮您设计网页程序(SQL、HTML 亦支持)。
  phpDesigner 7支持PHP中你最喜欢的框架,它也支持任何流行的JavaScript框架,如jQuery的全
  雅虎UI库,ExtJS原型和MooTools。
  最新版phpdesigner 2008,是完整的集成开发环境,对于php无论初学者和专业开发人员,帮助您提高编辑过程中,分析,调试及出版应用和网站采用php和其它网络语言!
  官方站点:
  www.mpsoftware.dk/phpdesigner.php

posted @ 2012-05-07 20:25 青蛙學堂 阅读(3) | 评论 (1)编辑 收藏

2012年5月4日

jquery 使用方法--转

     摘要: jquery 使用方法   jQuery是目前使用最广泛的javascript函数库。据统计,全世界排名前100万的网站,有46%使用jQuery,远远超过其他库。微软公司甚至把jQuery作为他们的官方库。对于网页开发者来说,学会jQuery是必要的。因为它让你了解业界最通用的技术,为将来学习更高级的库打下基础,并且确实可以很轻松地做出许多复杂的效果。 一...  阅读全文

posted @ 2012-05-04 09:12 青蛙學堂 阅读(6) | 评论 (1)编辑 收藏

2012年5月3日

Linux--分区2



1、/分区。用于存储系统文件。
2、swap,即交换分区,也是一种文件系统,它的作用是作为Linux的虚拟内存。
在Windows下,虚拟内存是一个文件:pagefile.sys;而Linux下,虚拟内存需要使用独立分区,这样做的目的据说是为了提高虚拟内存的性能。
3、/home:是用户文件夹所在的地方。如果独立划分/home,即使Ubuntu不能启动,也可以用Live CD启动来取得自己的文件资料。
4、/boot:包含了操作系统的内核和在启动系统过程中所要用到的文件。
在很多老旧的教程中,都会让用户在/boot目录上挂载一个大小为100MB左右的独立分区,并推荐把该/boot放在硬盘的前面——即1024柱面之前。事实上,那是Lilo无法引导1024柱面后的操作系统内核的时代的遗物了。当然,也有人说,独立挂载/boot的好处是可以让多个Linux共享一个/boot。
其实,无论是基于上述的哪种理由,都没有必要把/boot分区独立出来。首先,Grub可以引导1024柱面后的Linux内核;其次,即使是安装有多个Linux,也完全可以不共享/boot。因为/boot目录的大小通常都非常小,大约20MB,分一个100MB的分区无疑是一种浪费,而且还把把硬盘分的支离破碎的,不方便管理。另外,如果让两个Linux共享一个/boot,每次升级内核,都会导致Grub的配置文件冲突,带来不必要的麻烦。而且,不独立/boot分区仅仅占用了根目录下的大约20MB左右的空间,根本不会对根目录的使用造成任何影响。
但值得注意的是,随着硬盘容量的增大,无法引导Linux内核的现象再次出现,这也就是著名的137GB限制。很遗憾,Grub是无法引导137GB之后的分区中的Linux内核的。如果你不巧遇到了这样的情况,你就要考虑把/boot独立挂载到位于137GB前方的独立分区中,或者索性就把 Linux的分区都往前移动,让根目录所在分区位于137GB之前。
5、/usr/local:是 Linux系统存放软件的地方。
建议把/opt,/usr或/usr/local独立出来的教程,基本上也是非常老的了。使用Ubuntu时,我们一般都是使用系统的软件包管理器安装软件,很少自己编译安装软件。而建议独立/usr,/opt,/usr/local的理由无非是为了重装系统时不再重新编译软件而直接使用早先编译的版本。不过对于大多数普通用户来说,这个建议通常是没有意义的。
6、/var:是系统日志记录分区。
7、/tmp分区,用来存放临时文件。
建议把/var和/tmp独立出来的教程通常是面向服务器的。因为高负载的服务器通常会产生很多日志文件、临时文件,这些文件经常改变,因此把/var,/tmp独立出来有利于提高服务器性能。但如果你用Ubuntu是做桌面的,或从来不关心过系统日志这东西,就没有必要独立的为/var和/tmp挂载分区。

还有些老旧的教程中建议把Linux安装在主分区中,或在/boot下挂载一个主分区。事实上,这也是不需要的。Linux的所有分区都可以位于逻辑分区中。所以请放心的把Linux安装在逻辑分区中吧。

---

Linux的文件系统(分区格式)主要有ext3、ReiserFS、XFS、JFS等。同时Linux也可以读写使用FAT、FAT32和NTFS文件系统的分区。

Ubuntu默认的文件系统是ext3。

或许有人会告诉你其他文件系统会有什么什么优点,ext3会有什么什么不好,但如果你对文件系统并不了解的话,我的建议就是使用默认的ext3,默认的设置可能不一定是性能最好的,但对普通用户一定是最稳定最安全最适合的。

最大分区大小:ext3是4TB,ReiseFS是16TB。FAT32在Windows XP和Windows 2000里的最大分区是32GB;而Linux中的FAT32则可以支持到2TB。
最大文件大小:ext3是2GB-4GB,ReiseFS是8TB,FAT32是4GB。

---

如果你准备在硬盘里只安装Ubuntu一个操作系统的话,建议你采用三分区方案:
1)“/”分区:使用ext3文件系统;分区容量为10GB-15GB。
2)“swap”分区:用于交换空间。内存小于或等于 512MB,swap分区容量为内存大小的2倍;内存大于512MB的,swap分区容量等于内存大小。
3)“/home”分区:使用ext3文件系统;分区容量为“/”和“swap”以外的剩余空间

在linux系统中至少必须有两个挂载点(磁盘分区),分别是 / 及 swap ,其余是否要将其他的挂载点独立分割出来则视你的规划需求而定。可参考以下建议:

swap的大小约等同你的内存大小,或稍大

初次接触的新手或硬盘空间有限 Desktop的安装建议:
挂载点     装置              说明
/            /dev/hda1        可用空间 - swap大小后的所有空间
swap      /dev/hda2        大约内存大小 建议至少512Mb

高级用户 Desktop的安装建议:
挂载点     装置              说明
/             /dev/hda1       15G
/home     /dev/hda2       最大的剩余空间
/boot     /dev/hda3    128MB左右
swap     /dev/hda5    大约内存大小(建议至少512MB)

高级用户 Server的安装建议:
挂载点     装置                      说明
/             /dev/hda1        15G
/home     /dev/hda2        最大的剩余空间
/boot     /dev/hda3    128MB左右
swap     /dev/hda5    大约内存大小(建议至少512MB)
/var             /dev/hda6    视服务器功能决定大小

安装Liunx Ubuntu磁盘分区的配置与建议事项就说到这里,有了以上的相关说明相信要将自己的硬盘规划好,应该不会是件难事啦。

Linux 规定了主分区(或者扩展分区)占用 1 至 16 号码中的前 4 个号码。以第一个 IDE 硬盘为例说明,主分区(或者扩展分区)占用了 hda1、hda2、hda3、hda4,而逻辑分区占用了 hda5 到 hda16 等 12 个号码。因此,Linux 下面每一个硬盘总共最多有 16 个分区。
因此 hda1- hda4 是主区的意思。 hda5以后是逻辑分区!!

posted @ 2012-05-03 15:35 青蛙學堂 阅读(3) | 评论 (0)编辑 收藏

linux--分区

1.消失了的分区
       在WinPE下,我将一块硬盘分成一个主分区和四个逻辑分区,主分区指派驱动器号C,四个逻辑分区均不指派驱动器号:

这会出现什么情况?结果是在我的电脑中你只能看到一个C盘,其他四个盘都不见了:
2.将分区装入文件夹
接下来,我在C盘建了boot,home,user,tmp四个文件夹:

再打开磁盘管理,按下边的步骤将第一个逻辑分区装入一个空白的NTFS文件夹中(C:\boot):

再按上边同样的步骤,将第二个逻辑分区装入C:\home文件夹中,将第三个逻辑分区装入C:\user文件夹中。
3.有什么变化了吗?
这会发生什么变化?打开C盘,好像看不出有什么变化:

再打开boot文件夹,建一个txt文件,好像一切仍是正常:

打开磁盘管理,我们为第一个逻辑驱动器指派一个驱动器号D,到我的电脑中打开D盘看下:


      txt不是在C:\boot文件夹中吗?怎么到D盘来了?再到C:\boot看下,txt仍在,对其进行修改保存,再看D:\mzwu.com.txt,也被修改了!
      想到什么了吗?没错,打开C:\boot,实际打开的是D盘,换句话说,C:\boot是D盘的入口,以此类推,home变成了第二个逻辑分区的入口,user变成了第三个逻辑分区的入口。
      再看下将分区装入C:\boot前后,C:\boot文件夹属性的变化:


4.Linux分区和挂载点
Linux下将分区挂载到挂载点,和上边Windows下将磁盘分区装入空白的NTFS文件夹其实是一样的。Linux根目录就是上边的C盘,不同的是Windows可以为其他分区指派驱动器号,Linux不行。一个挂载点就是一个文件夹,将分区挂载到一个挂载点,挂载点就成了分区的入口。没有挂载分区的挂载点将使用根目录的空间,没有挂载到挂载点的分区是无法访问的,如上边第四个逻辑分区。

posted @ 2012-05-03 15:22 青蛙學堂 阅读(2) | 评论 (0)编辑 收藏

仅列出标题  下一页
<2012年5月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

导航

统计

常用链接

留言簿(4)

随笔分类

随笔档案

收藏夹

青蛙学堂

最新评论

阅读排行榜

评论排行榜

60天内阅读排行