Archive for  MySQL

PHP+PDO+MSSQL的灾难。

发表于 2009-09-17 23:15 : 评论 ( 1 条评论 )

PHP6默认就使用PDO进行数据库之间的连接方法了,本来以后可以等PHP6出来再去适应,想不到前天接下的一个项目却让我提前过了一把瘾。 灾难呀。 首先是PDO报错的方法,改成编号了,连接数据库的“数据库密码错误”却变成“8000”的错误代码,一搜,N种错误可能。 再次,我怎么感觉PDO的效率不那么理想,一个IP的连接,一直连接到超时都不报错。 最后,怎么还是感觉自己写的类好用,适应起来还真是别扭。 最后,很痛苦的事情出在PDO+MSSQL的分页上,真是灾难中的灾难。 这次的项目需要将MSSQL中的数据转换到Mysql中,本来想用PDO练练手的,结果却死也找不到PDO+MSSQL的分页类。习惯了到网上找资源、找类库、找函数,一时间找不到前辈们的杰作,真让人惶恐不已。前无古人,这种感觉未必那么有成就感。 MSSQL的分页历来被人诟病,相比之下,我真想说“Mysql,我爱死你了”。 好想发一个表情,结果没有,懒得倒腾了。一一!

MYSQL 数据库函数库备忘

发表于 2009-02-3 20:26 : 评论 ( 3 条评论 )

一、数学函数 ABS(x)                    返回x的绝对值 BIN(x)          返回x的二进制(OCT返回八进制,HEX返回十六进制) CEILING(x)                返回大于x的最小整数值 EXP(x)          返回值e(自然对数的底)的x次方 FLOOR(x)         返回小于x的最大整数值 GREATEST(x1,x2,...,xn)  返回集合中最大的值 LEAST(x1,x2,...,xn)       返回集合中最小的值 LN(x)                     返回x的自然对数 LOG(x,y)         返回x的以y为底的对数 MOD(x,y)                  返回x/y的模(余数) PI()           返回pi的值(圆周率) RAND()          返回0到1内的随机值,可以通过提供一个参数(种子)使RAND()随机数生成器生成一个指定的值。 ROUND(x,y)        返回参数x的四舍五入的有y位小数的值 SIGN(x)          返回代表数字x的符号的值 SQRT(x)          返回一个数的平方根 TRUNCATE(x,y)             返回数字x截短为y位小数的结果 二、聚合函数(常用于GROUP BY从句的SELECT查询中) AVG(col)         返回指定列的平均值 COUNT(col)        返回指定列中非NULL值的个数 MIN(col)         返回指定列的最小值 MAX(col)         返回指定列的最大值 SUM(col)         返回指定列的所有值之和 GROUP_CONCAT(col)     返回由属于一组的列值连接组合而成的结果 三、字符串函数 ASCII(char)        返回字符的ASCII码值 BIT_LENGTH(str)      返回字符串的比特长度 CONCAT(s1,s2...,sn)    将s1,s2...,sn连接成字符串 CONCAT_WS(sep,s1,s2...,sn)  将s1,s2...,sn连接成字符串,并用sep字符间隔 INSERT(str,x,y,instr)    将字符串str从第x位置开始,y个字符长的子串替换为字符串instr,返回结果 FIND_IN_SET(str,list)   分析逗号分隔的list列表,如果发现str,返回str在list中的位置 LCASE(str)或LOWER(str)   返回将字符串str中所有字符改变为小写后的结果 LEFT(str,x)        返回字符串str中最左边的x个字符 LENGTH(s)         返回字符串str中的字符数 LTRIM(str)         从字符串str中切掉开头的空格 POSITION(substr,str)    返回子串substr在字符串str中第一次出现的位置 QUOTE(str)         用反斜杠转义str中的单引号 REPEAT(str,srchstr,rplcstr)返回字符串str重复x次的结果 REVERSE(str)        [...]

MySQL正则表达式替换,字符替换方法

发表于 2008-08-16 00:18 : 评论 ( 2 条评论 )

两句SQL,都是字符替换,比较好用。 update comment set url=IF(url REGEXP 'test.yahoo.com.cn',REPLACE(url,'www1.sohu.com','www.sina.com'),REPLACE(url,'www2.yahoo.com','www.sina.com')) where 1=1; update comment set author_url=REPLACE(author_url,'sohu','sina') where author_url REGEXP 'www.sohu.com';

DELETE,UPDATE与LEFT JOIN

发表于 2008-07-30 22:18 : 评论 ( 没有评论 )

#UPDATE: UPDATE A SET ApproverID=NULL,ApproveDate=NULL,ApproveResult=100,CheckerID=null,CheckDate=null, IsCheck=0 FROM [SH_MaterialApplyBuyBill] A LEFT JOIN [SH_MaterialApplyBuyBillDetail] B ON A.ID=B.[MaterialApplyBuyBillID] WHERE A.id=125 AND @InDetailCount=0 #DELETE: DELETE A FROM [SH_ClosingBalance] A LEFT JOIN [SH_StoreHouse] B ON A.StoreHouseID=B.ID WHERE B.departmentID='1000' update table1 set a.a=1 from table1 a inner join table2 b on a.ip=b.ip

MySQL中的转义字符列表

发表于 2008-07-16 13:07 : 评论 ( 没有评论 )

MySQL的转义字符“\” MySQL识别下列转义字符: \0 一个ASCII 0 (NUL)字符。 \n 一个新行符。 \t 一个定位符。 \r 一个回车符。 \b 一个退格符。 \' 一个单引号(“'”)符。 \ " 一个双引号(“ "”)符。 \\ 一个反斜线(“\”)符。 \% 一个“%”符。它用于在正文中搜索“%”的文字实例,否则这里“%”将解释为一个通配符。 \_ 一个“_”符。它用于在正文中搜索“_”的文字实例,否则这里“_”将解释为一个通配符。 注意,如果你在某些正文环境中使用“\%”或“\%_”,这些将返回字符串“\%”和“\_”而不是“%”和“_”。 ★★ 有几种方法在一个字符串内包括引号: 1、必须转义的: 一个字符串用单引号“'”来引用的,该字符串中的单引号“'”字符可以用“''”方式转义。 一个字符串用双引号“ "”来引用的,该字符串中的“ "”字符可以用“ " "”方式转义。 同时你也可以继续使用一个转义字符“\”来转义 2、可不转义的: 一个字符串用双引号“ "”来引用的,该字符串中的单引号“'”不需要特殊对待而且不必被重复或转义。 同理, 一个字符串用单引号“'”来引用的,该字符串中的双引号“ "”不需要特殊对待而且不必被重复或转义。 下面显示的SELECT演示引号和转义如何工作: mysql > SELECT 'hello', ' "hello "', ' " "hello " [...]

mysql 中的数据类型

发表于 2008-07-10 09:54 : 评论 ( 没有评论 )

  数据类型 描述 字节 推荐使用 SMALLINT 整数,从-32000到 +32000范围 2 存储相对比较小的整数。 比如: 年纪,数量 INT 整数,从-2000000000 到 +2000000000 范围 4 存储中等整数 例如: 距离 BIGINT 不能用SMALLINT 或 INT描述的超大整数。 8 存储超大的整数 例如: 科学/数学数据 FLOAT 单精度浮点型数据 4 存储小数数据 例如:测量,温度 DOUBLE 双精度浮点型数据 8 需要双精度存储的小数数据 例如:科学数据 DECIMAL 用户自定义精度的浮点型数据 变量;取决于精度与长度 以特别高的精度存储小数数据。 例如:货币数额,科学数据 CHAR 固定长度的字符串 特定字符串长度(高达255字符) 存储通常包含预定义字符串的变量 例如: 定期航线,国家或邮编 VARCHAR 具有最大限制的可变长度的字符串 变量; 1 + [...]

PHP正则表达式使用详解

发表于 2008-05-15 14:46 : 评论 ( 1 条评论 )

一个正则表达式是一个特定的格式化模式,可以用来找出一个字符串在另一个字符串中的使用情况。几个编程语言,包括Visual Basic,Perl,JavaScript和PHP都支持正则表达式,希望在这篇入门指导的结束,Mitchell(作者自己)可以让你在PHP程序中能应用一些基本的正则表达式。正则表达式是在各种各样的程序语言中突出的古怪特征中的一种,但是由于它们看起来是很难的一个概念,所以很多开发者就把它们放到了角落里,忘记了它们的存在。 让我们先来看看什么是正则表达式,为什么你要在PHP程序中用到它们。 什么是正则表达式? 你对从一个不错的老的基于控制的文本编辑器中分离出像BBEdit和notepad的程序,有什么看法呢?两个都支持文本输入,可以让你保存文本到文件中,但是现在的文本编辑器也支持其它功能,包括查找–代替工具,这让编辑一个文本文件相当容易。       正则表达式也是相似的,只是更好一些。正则表达式可以被认为一个极其高级的查找-替换工具,让我们从痛苦中摆脱出来:不必再写定制的数据确认例子来检查电子邮件地址或者来确认电话号码的格式是正确的,如此等等。       任何程序中最普通的函数之一就是数据有效性检查,PHP捆绑了一些文本检查函数,允许我们用正则表达式匹配一个字符串,确认有一个空格,有一个问号,等等。       你不知道的可能是,正则表达式可以简单装备吗,当你掌握了一些正则表达式时(这个正则表达式可以用来告诉正则表达式引擎一个字符串中我们想要匹配的部分),你会自问为什么会把正则表达式扔到角落里这么久,^_^。       PHP有两套函数,用来处理两种类型的正则表达式:Perl5兼容模式,和Posix标准兼容模式。在这篇文章中我们将看看ereg函数,用遵照Posix标准的搜索表达式工作。虽然它们并没有Perl5模式那样强大,但是一种不错的学习正则表达式的方法。如果你对PHP支持的Perl5兼容正则表达式感兴趣,可以到PHP.net网站找一些关于preg函数的细节。       PHP有六个函数来处理正则表达式,它们都把一个正则表达式作为它们的第一个参数,列出如下: ereg: 最常用的正则表达式函数, ereg 允许我们搜索跟一个正则表达式匹配的一个字符串. ereg_replace: 允许我们搜索跟正则表达式匹配的一个字符串,并用新的字符串代替所有这个表达式出现的地方。 eregi: 和ereg几乎是一样效果,不过忽略大小写。 eregi_replace: 和ereg_replace有着一样的搜索-替换功能,不过忽略大小写. split: 允许我们搜索和正则表达式匹配的字符串,并且以字符串集合的方式返回匹配结果. spliti: split函数忽略大小写的版本. 为什么使用正则表达式?         如果你不断地建立不同的函数来检查或者操作字符串的一部分,现在你可能要放弃所有的这些函数,取而代之的用正则表达式。如果你对下列的问题都答“是的”,那么你肯定要考虑使用正则表达式了: 你是否正在写一些定制的函数来检查表单数据(比如在电子信箱地址中的一个@,一个点)? 你是否写一些定制的函数,在一个字符串中循环每个字符,如果这个字符匹配了一个特定特征(比如它是大写的,或者它是一个空格),那么就替换它?        除了是令人不舒服的字符串检查和操作方法,如果没有有效率地写代码,上述的两条也会使你的程序慢下来。你是否更倾向于用下面的代码检查一个电子信箱地址呢: <?php function validateEmail($email) {        $hasAtSymbol = strpos($email, "@");        $hasDot = strpos($email, ".");        if($hasAtSymbol && $hasDot)           [...]

在Vista下安装Mysql 5.0

发表于 2008-05-15 03:43 : 评论 ( 1 条评论 )

在网上看到很多篇文章介绍在VISTA下安装MYSQL,自己试过很多次都没有成功,经过别人帖子的指点,终于找到了成功安装MYSQL的方法,现在分享如下:   1.去官方下载MYSQL 5.0,下载地址:http://http://dev.mysql.com/downloads/ 下载5.0版本的。   2.修改防火墙的设置,在允许例外里添加新的端口,名字为mysql,开放的端口为TCP 3306。   3.安装MYSQL 5.0,可以自己修改安装路径和组件等。   4.安装完成后,Mysql server instance config wizard应该是启动不了的,下面的工作就是为了解决这个问题的,因为这是配置Mysql的唯一途径。   5.到http://angusj.com/resourcehacker/下载简体中文版(如果你看的懂英文,那就直接下原版的)。   6.解压rh_chinese_big5.zip ,执行 ResHacker.exe   7.打开MySQLInstanceConfig.exe (在安裝 MySQL 的bin 目录中)   8.左侧展开「24」→「1」→「1033」    9. 右侧找到<requestedExecutionLevel level="asAdministrator" uiAccess="false"> 这行 10.将 level="asAdministrator" 改成 level="requireAdministrator"  11. 重新编译  12.保存后关闭 (如果不能保存,另存在 bin 目录外,然后覆盖回來也可以) 13.这时MySQLInstanceConfig.exe,就可以正常的配置了。