LINUX启动/重启/停上MYSQL的命令

如何启动/停止/重启MySQL

一、启动方式

1、使用 service 启动:service mysqld start

2、使用 mysqld 脚本启动:/etc/inint.d/mysqld start

3、使用 safe_mysqld 启动:safe_mysqld&

二、停止

1、使用 service 启动:service mysqld stop

2、使用 mysqld 脚本启动:/etc/inint.d/mysqld stop

3、mysqladmin shutdown

三、重启

1、使用 service 启动:service mysqld restart

2、使用 mysqld 脚本启动:/etc/inint.d/mysqld restart
提问 编辑摘要

如何启动/停止/重启MySQL
一、启动方式

1、使用 service 启动:service mysqld start

2、使用 mysqld 脚本启动:/etc/inint.d/mysqld start

3、使用 safe_mysqld 启动:safe_mysqld&

二、停止

1、使用 service 启动:service mysqld stop

2、使用 mysqld 脚本启动:/etc/inint.d/mysqld stop

3、mysqladmin shutdown

三、重启

1、使用 service 启动:service mysqld restart

2、使用 mysqld 脚本启动:/etc/inint.d/mysqld restart

刚开始学mysql时都是用redhat自带的。启动是什么 /rc.d/init.d/ start
这很简单,但是后来越学越多,系统自带的mysql,有的是版本太低,有的是与
自己想要装的web服务需要的低版本的mysql

后来自己学着以tar的方式安装mysql,我的mysql装在/usr/local/mysql目录下启

动碰到过很多问题。最常见的是:
ERROR 2002: Can't connect to local MySQL server through socket

'/tmp/mysql.sock' (111)

解决办法:
[root@test mysql]# /usr/local/mysql/bin/mysqladmin -u root /
> -S /var/lib/mysql/mysql.sock password 'your.passwd'
或者做个连接
ln -s /var/lib/mysql/mysql.sock /tmp
其实提示找不到 /tmp/mysql.sock有时也并不是/tmp目录下没这个文件,是启动
命令不对,我碰到过
常见的几种启动方式,自己也不是记得很清楚,如果你确定tmp下有mysql.sock这
个文件不妨试试另外的几个命令
/usr/local/mysql/bin/mysql -u root -p
/usr/local/mysql/bin/mysqld --user=mysql&
/usr/local/mysql/bin/mysqld --user=root&
/usr/local/mysql/bin/mysqld_safe --user=root&
/usr/local/mysql/bin/mysqld_safe --user=mysql&
/usr/local/mysql/bin/safe_mysqld--uer=root&(注意safe_mysqld与mysqld_safe是不同的,&表示mysql在后台运行)我的就会报错了
STOPPING server from pid file
/usr/local/mysql/data/localhost.localdomain.pid
060304 11:46:21 mysqld ended
这是权限问题,我的mysql目录属于root用户,也属于root群组,改用mysqld_safe启动就没问题了,
大家只要注意这几个mysql,safe_mysqld,mysqld_safe,mysqld,mysqladmin.多试
几次
其实有时mysql已经正常启动了,查看mysql是否启动命令
ps -aux | grep mysqld
会看到如下类似内容
mysql 6394 0.0 1.5 10528 992 pts/3 S 16:16 0:00
/usr/local/mysql/
mysql 6395 0.0 1.5 10528 992 pts/3 S 16:16 0:00
/usr/local/mysql/
mysql 6396 0.0 1.5 10528 992 pts/3 S 16:16 0:00
/usr/local/mysql/
root 6422 0.0 1.1 2408 732 pts/3 S 16:20 0:00 grep
mysql

查看mysql是否在监听端口命令
netstat -tl | grep mysql
会看到如下类似内容
tcp 0 0 *:mysql *:* LISTEN

MySQL数据表损坏的正确修复方案

 修复以损坏的MySQL数据表的实际操作在实际中是我们经常用到的,以下的文章主要是介绍正确修复以损坏的MySQL数据表的实际操作步骤,以下就是正文的介绍,希望会给你带来一些帮助在此方面。
  于断电或非正常关机而导致MySQL(和PHP搭配之最佳组合)数据库出现错误是非常常见的问题。有两种方法,一种方法使用MySQL(和PHP搭配之最佳组合)的check table和repair table 的sql语句,另一种方法是使用MySQL(和PHP搭配之最佳组合)提供的多个myisamchk, isamchk数据检测恢复工具。前者使用起来比较简便。推荐使用。
  1. check table 和 repair table
  登陆MySQL(和PHP搭配之最佳组合) 终端:
  MySQL(和PHP搭配之最佳组合) -uxxxxx -p dbname
  1.> check table tabTest;
  如果出现的结果说Status是OK,则不用修复,如果有Error,可以用:
  1.> repair table tabTest;
  进行修复,修复之后可以在用check table命令来进行检查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。
  2. myisamchk, isamchk
  其中myisamchk适用于MYISAM类型的数据表,而isamchk适用于ISAM类型的数据表。这两条命令的主要参数相同,一般新的系统都使用MYISAM作为缺省的数据表类型,这里以myisamchk为例子进行说明。当发现某个数据表出现问题时可以使用:
  1.myisamchk tablename.MYI
  进行检测,如果需要修复的话,可以使用:
  1.myisamchk -of tablename.MYI
  关于myisamchk的详细参数说明,可以参见它的使用帮助。需要注意的时在进行修改时必须确保MySQL(和PHP搭配之最佳组合)服务器没有访问这个数据表,保险的情况下是最好在进行检测时把MySQL(和PHP搭配之最佳组合)服务器Shutdown掉。
  另外可以把下面的命令放在你的rc.local里面启动MySQL(和PHP搭配之最佳组合)服务器前:
  1.[ -x /tmp/MySQL(和PHP搭配之最佳组合).sock ] && /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI
  其中的/tmp/MySQL(和PHP搭配之最佳组合).sock是MySQL(和PHP搭配之最佳组合)监听的Sock文件位置,对于使用RPM安装的用户应该是/var/lib/MySQL(和PHP搭配之最佳组合)/MySQL(和PHP搭配之最佳组合).sock,对于使用源码安装则是/tmp/MySQL(和PHP搭配之最佳组合).sock可以根据自己的实际情况进行变更,而pathtochk则是myisamchk所在的位置,DATA_DIR是你的MySQL(和PHP搭配之最佳组合)数据库存放的位置。
  需要注意的时,如果你打算把这条命令放在你的rc.local里面,必须确认在执行这条指令时MySQL(和PHP搭配之最佳组合)服务器必须没有启动!
  检测修复所有数据库(表)
  MySQL(和PHP搭配之最佳组合)check -A -o -r -p
  以上的相关内容就是对修复损坏的MySQL数据表的介绍,望你能有

状态栏里面的显示桌面的快捷图标不见怎样找回来

在Windows操作系统中,任务栏(快速启动栏)中的显示桌面图标的实际位置是“C:\Windows\System\显示桌面.scf”。快速启动是 通过放在“C:\Windows\Application Data\Microsoft\Internet Explorer\Quick Launch\显示桌面.scf”实现的。当显示桌面图标被误删需要恢复该图标时,可以在“C:\Windows\Application Data\Microsoft\Internet Explorer\Quick Launch\显示桌面.scf”新建一个“显示桌面.scf”文件。也可以从“C:\Windows\System\显示桌面.scf”找到它,复制到 文件夹“C:\Windows\Application Data\Microsoft\Internet Explorer\Quick Launch”中或创建快捷方式直接拖拽至任务栏中即可。
上面讲的比较难懂,更方便的操作是:使用记事本等文本编辑器,重新用以下内容建立一个显示桌面.scf文件。内容如下:
[Shell]
Command=2
IconFile=explorer.exe,3
[Taskbar]
Command=ToggleDesktop
保存时把文件名设为“显示桌面.scf”,再将其拖到快速启动栏上,显示桌面图标就找回来了。
第三行代表的是图标的位置,把数字“3”换成“4”,刷新,图标会变化;再换成“5”,变成另外一个。更改显示桌面图标的方法就是这样。其实,只要在“IconFile=”后输入你所中意的图标的路径就可以了。
在Windows 9x系统下,如果出现误删显示桌面图标的情况,只需要在搜索里键入“*.scf”就可以找到显示桌面图标。而在Windows XP下,只能通过复制或写程序了。当然,也可以从别的电脑里拷贝一个过来。

方便的操作是:使用记事本等文本编辑器,重新用以下内容建立一个显示桌面.scf文件。内容如下:
[Shell]
Command=2
IconFile=explorer.exe,3
[Taskbar]
Command=ToggleDesktop
保存时把文件名设为“显示桌面.scf”,再将其拖到快速启动栏上,显示桌面图标就找回来了。
第三行代表的是图标的位置,把数字“3”换成“4”,刷新,图标会变化;再换成“5”,变成另外一个。更改显示桌面图标的方法就是这样。其实,只要在“IconFile=”后输入你所中意的图标的路径就可以了。

更简便的方法:“运行”对话框中输入“REGSVR32 /n /i:u shell32”(不含双引号),然后回车,片刻后会弹出“shell32中的DllInstall成功”对话框,“显示桌面”按钮就出现了.

 

2、点击“开始”菜单→“运行”命令,在弹出的“运行”对话框中输入“regsvr32 /n /i:u shell32”后回车,丢失的图标便又重新回到快速启动栏了 这个厉害!!!

PHP 执行MySQL存储过程 can’t return a result set in the given context及参数解释

自己写了一个mysql存储过程,以为php有用于调用存储过程的内建函数,查了一下发现只能用mysql_query(call pro())这样的方式,我认为从本质上也就相当于在mysql命令行里执行语句了,由于我的存储过程含有输入输出参数,直接调用会报一个 mysql_error错误:XXXXcan’t return a result set in the given context

google了一下这个错误发现有人用以下的代码解决了这个问题:
原文地址:http://www.phpweblog.net/GaRY/archive/2008/01/29/2752.html#Post

关键就是两点

define(‘CLIENT_MULTI_RESULTS’, 131072);

$link= mysql_connect(“127.0.0.1″,”root”,”",1,CLIENT_MULTI_RESULTS) or die(“Could not connect: “.mysql_error());

下面就可以正常使用了,以下是例子程序。

 

1 <?php
2 define(‘CLIENT_MULTI_RESULTS’, 131072);
3
4 $link=mysql_connect(“127.0.0.1″,”root”,”",1,CLIENT_MULTI_RESULTS)ordie(“Could not connect: “.mysql_error());
5 mysql_select_db(“vs”)ordie(“Could not select database”);
6 ?>
7
8 <?php
9 $result=mysql_query(“call get_news_from_class_id(2)”)ordie(“Query failed:”.mysql_error());
10 while($row=mysql_fetch_array($result,MYSQL_ASSOC))
11 {
12 $line=’<tr><td><a target = _blank href=\”.$row["url"].’\'>’.$row["title"].’(‘.$row["page_time"].’)’.’</a></td></tr>’;
14 echo$line;
15 printf(” “);
16
17 }
18 mysql_free_result($result);
19 ?>
20
21 <?php
22 mysql_close($link);
23 ?>

其中的一个参数CLIENT_MULTI_RESULTS不明白是什么意思,google之,在mysql的官方主页上关于mysql提供的c接口的文档 (http://dev.mysql.com/doc/refman/5.0/en/mysql-real-connect.html)里找到了这个参数 和其他一些参数,我大概翻译了一下描述,如下:

Flag Name Flag Description
CLIENT_COMPRESS Use compression protocol.(使用压缩协议。)
CLIENT_FOUND_ROWS Return the number of found (matched) rows, not the number of changed rows.(返回找到(匹配)的行数,而不是改变了的行数。)
CLIENT_IGNORE_SIGPIPE Prevents the client library from installing a SIGPIPE signal handler. This can be used to avoid conflicts with a handler that the application has already installed.(阻止客户端库安装一个SIGPIPE信号处理器。这个可以用于当应用程序已经安装该处理器的时候避免与其发生冲突。)
CLIENT_IGNORE_SPACE Allow spaces after function names. Makes all functions names reserved words.(允许在函数名后使用空格。所有函数名可以预留字。)
CLIENT_INTERACTIVE Allow interactive_timeout seconds (instead of wait_timeout seconds) of inactivity before closing the connection. The client’s session wait_timeout variable is set to the value of the session interactive_timeout variable.(允许使用关闭连接之前的不活动交互超时的描述,而不是等待超时秒数。客户端的会话等待超时变量变为交互超时变量。)
CLIENT_LOCAL_FILES Enable LOAD DATA LOCAL handling.
CLIENT_MULTI_RESULTS Tell the server that the client can handle multiple result sets from multiple-statement executions or stored procedures. This flag is automatically enabled if CLIENT_MULTI_STATEMENTS is enabled. See the note following this table for more information about this flag.(通知服务器客户端可以处理由多语句或者存储过程执行生成的多结果集。当打开CLIENT_MULTI_STATEMENTS时,这个标志自动的被打开。可以在本表后查看更多关于该标志位的信息。)
CLIENT_MULTI_STATEMENTS Tell the server that the client may send multiple statements in a single string (separated by “;”). If this flag is not set, multiple-statement execution is disabled. See the note following this table for more information about this flag.(通知服务器客户端可以发送多条语句(由分号分隔)。如果该标志为没有被设置,多条语句执行。)
CLIENT_NO_SCHEMA Don’t allow the db_name.tbl_name.col_name syntax. This is for ODBC. It causes the parser to generate an error if you use that syntax, which is useful for trapping bugs in some ODBC programs.(不允许“数据库名.表名.列名”这样的语法。这是对于ODBC的设置。当使用这样的语法时解析器会产生一个错误,这对于一些ODBC的程序限制bug来说是有用的。)
CLIENT_ODBC Unused.(不使用)
CLIENT_SSL Use SSL (encrypted protocol). This option should not be set by application programs; it is set internally in the client library. Instead, use mysql_ssl_set() before calling mysql_real_connect().(使用SSL。这个设置不应该被应用程序设置,他应该是在客户端库内部是设置的。可以在调用mysql_real_connect()之前调用mysql_ssl_set()来代替设置。)
CLIENT_REMEMBER_OPTIONS Remember options specified by calls to mysql_options(). Without this option, if mysql_real_connect() fails, you must repeat the mysql_options() calls before trying to connect again. With this option, the mysql_options() calls need not be repeated.(记住通过调用mysql_options()生成的设置。如果不使用这个设置,当mysql_real_connect失败时,再重新连接之前必须反复调用mysql_options()。当然,如果使用这个设置,就不必反复调用了。)

下面有对于CLIENT_MULTI_STATEMENTS的说明:
If you enable CLIENT_MULTI_STATEMENTS or CLIENT_MULTI_RESULTS, you should process the result for every call to mysql_query() or mysql_real_query() by using a loop that calls mysql_next_result() to determine whether there are more results. For an example, see Section 20.9.12, “C API Support for Multiple Statement Execution”.

如果打开了CLIENT_MULTI_STATEMENTS或CLIENT_MULTI_RESULTS,你必须对每一个mysql_query()或者mysql_real_query()的调用结果通过一个循环来处理,在这个循环中,调用mysql_next_result()来决定(发现)是否有更多的结果,如Section 20.9.12, “C API Support for Multiple Statement Execution”

 

来源:http://edu.codepub.com/2010/0921/26012.php

PHP阳历到农历转换的一个类

<?php
//PHP阳历到农历转换的一个类
class Calendar
{
#农历每月的天数
    var $everyCMonth=array(
    0=>array(8,0,0,0,0,0,0,0,0,0,0,0,29,30,7,1),
    1=>array(0,29,30,29,29,30,29,30,29,30,30,30,29,0,8,2),
    2=>array(0,30,29,30,29,29,30,29,30,29,30,30,30,0,9,3),
    3=>array(5,29,30,29,30,29,29,30,29,29,30,30,29,30,10,4),
    4=>array(0,30,30,29,30,29,29,30,29,29,30,30,29,0,1,5),
    5=>array(0,30,30,29,30,30,29,29,30,29,30,29,30,0,2,6),
    6=>array(4,29,30,30,29,30,29,30,29,30,29,30,29,30,3,7),
    7=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0,4,8),
    8=>array(0,30,29,29,30,30,29,30,29,30,30,29,30,0,5,9),
    9=>array(2,29,30,29,29,30,29,30,29,30,30,30,29,30,6,10),
    10=>array(0,29,30,29,29,30,29,30,29,30,30,30,29,0,7,11),
    11=>array(6,30,29,30,29,29,30,29,29,30,30,29,30,30,8,12),
    12=>array(0,30,29,30,29,29,30,29,29,30,30,29,30,0,9,1),
    13=>array(0,30,30,29,30,29,29,30,29,29,30,29,30,0,10,2),
    14=>array(5,30,30,29,30,29,30,29,30,29,30,29,29,30,1,3),
    15=>array(0,30,29,30,30,29,30,29,30,29,30,29,30,0,2,4),
    16=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0,3,5),
    17=>array(2,30,29,29,30,29,30,30,29,30,30,29,30,29,4,6),
    18=>array(0,30,29,29,30,29,30,29,30,30,29,30,30,0,5,7),
    19=>array(7,29,30,29,29,30,29,29,30,30,29,30,30,30,6,8),
    20=>array(0,29,30,29,29,30,29,29,30,30,29,30,30,0,7,9),
    21=>array(0,30,29,30,29,29,30,29,29,30,29,30,30,0,8,10),
    22=>array(5,30,29,30,30,29,29,30,29,29,30,29,30,30,9,11),
    23=>array(0,29,30,30,29,30,29,30,29,29,30,29,30,0,10,12),
    24=>array(0,29,30,30,29,30,30,29,30,29,30,29,29,0,1,1),
    25=>array(4,30,29,30,29,30,30,29,30,30,29,30,29,30,2,2),
    26=>array(0,29,29,30,29,30,29,30,30,29,30,30,29,0,3,3),
    27=>array(0,30,29,29,30,29,30,29,30,29,30,30,30,0,4,4),
    28=>array(2,29,30,29,29,30,29,29,30,29,30,30,30,30,5,5),
    29=>array(0,29,30,29,29,30,29,29,30,29,30,30,30,0,6,6),
    30=>array(6,29,30,30,29,29,30,29,29,30,29,30,30,29,7,7),
    31=>array(0,30,30,29,30,29,30,29,29,30,29,30,29,0,8,8),
    32=>array(0,30,30,30,29,30,29,30,29,29,30,29,30,0,9,9),
    33=>array(5,29,30,30,29,30,30,29,30,29,30,29,29,30,10,10),
    34=>array(0,29,30,29,30,30,29,30,29,30,30,29,30,0,1,11),
    35=>array(0,29,29,30,29,30,29,30,30,29,30,30,29,0,2,12),
    36=>array(3,30,29,29,30,29,29,30,30,29,30,30,30,29,3,1),
    37=>array(0,30,29,29,30,29,29,30,29,30,30,30,29,0,4,2),
    38=>array(7,30,30,29,29,30,29,29,30,29,30,30,29,30,5,3),
    39=>array(0,30,30,29,29,30,29,29,30,29,30,29,30,0,6,4),
    40=>array(0,30,30,29,30,29,30,29,29,30,29,30,29,0,7,5),
    41=>array(6,30,30,29,30,30,29,30,29,29,30,29,30,29,8,6),
    42=>array(0,30,29,30,30,29,30,29,30,29,30,29,30,0,9,7),
    43=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0,10,8),
    44=>array(4,30,29,30,29,30,29,30,29,30,30,29,30,30,1,9),
    45=>array(0,29,29,30,29,29,30,29,30,30,30,29,30,0,2,10),
    46=>array(0,30,29,29,30,29,29,30,29,30,30,29,30,0,3,11),
    47=>array(2,30,30,29,29,30,29,29,30,29,30,29,30,30,4,12),
    48=>array(0,30,29,30,29,30,29,29,30,29,30,29,30,0,5,1),
    49=>array(7,30,29,30,30,29,30,29,29,30,29,30,29,30,6,2),
    50=>array(0,29,30,30,29,30,30,29,29,30,29,30,29,0,7,3),
    51=>array(0,30,29,30,30,29,30,29,30,29,30,29,30,0,8,4),
    52=>array(5,29,30,29,30,29,30,29,30,30,29,30,29,30,9,5),
    53=>array(0,29,30,29,29,30,30,29,30,30,29,30,29,0,10,6),
    54=>array(0,30,29,30,29,29,30,29,30,30,29,30,30,0,1,7),
    55=>array(3,29,30,29,30,29,29,30,29,30,29,30,30,30,2,8),
    56=>array(0,29,30,29,30,29,29,30,29,30,29,30,30,0,3,9),
    57=>array(8,30,29,30,29,30,29,29,30,29,30,29,30,29,4,10),
    58=>array(0,30,30,30,29,30,29,29,30,29,30,29,30,0,5,11),
    59=>array(0,29,30,30,29,30,29,30,29,30,29,30,29,0,6,12),
    60=>array(6,30,29,30,29,30,30,29,30,29,30,29,30,29,7,1),
    61=>array(0,30,29,30,29,30,29,30,30,29,30,29,30,0,8,2),
    62=>array(0,29,30,29,29,30,29,30,30,29,30,30,29,0,9,3),
    63=>array(4,30,29,30,29,29,30,29,30,29,30,30,30,29,10,4),
    64=>array(0,30,29,30,29,29,30,29,30,29,30,30,30,0,1,5),
    65=>array(0,29,30,29,30,29,29,30,29,29,30,30,29,0,2,6),
    66=>array(3,30,30,30,29,30,29,29,30,29,29,30,30,29,3,7),
    67=>array(0,30,30,29,30,30,29,29,30,29,30,29,30,0,4,8),
    68=>array(7,29,30,29,30,30,29,30,29,30,29,30,29,30,5,9),
    69=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0,6,10),
    70=>array(0,30,29,29,30,29,30,30,29,30,30,29,30,0,7,11),
    71=>array(5,29,30,29,29,30,29,30,29,30,30,30,29,30,8,12),
    72=>array(0,29,30,29,29,30,29,30,29,30,30,29,30,0,9,1),
    73=>array(0,30,29,30,29,29,30,29,29,30,30,29,30,0,10,2),
    74=>array(4,30,30,29,30,29,29,30,29,29,30,30,29,30,1,3),
    75=>array(0,30,30,29,30,29,29,30,29,29,30,29,30,0,2,4),
    76=>array(8,30,30,29,30,29,30,29,30,29,29,30,29,30,3,5),
    77=>array(0,30,29,30,30,29,30,29,30,29,30,29,29,0,4,6),
    78=>array(0,30,29,30,30,29,30,30,29,30,29,30,29,0,5,7),
    79=>array(6,30,29,29,30,29,30,30,29,30,30,29,30,29,6,8),
    80=>array(0,30,29,29,30,29,30,29,30,30,29,30,30,0,7,9),
    81=>array(0,29,30,29,29,30,29,29,30,30,29,30,30,0,8,10),
    82=>array(4,30,29,30,29,29,30,29,29,30,29,30,30,30,9,11),
    83=>array(0,30,29,30,29,29,30,29,29,30,29,30,30,0,10,12),
    84=>array(10,30,29,30,30,29,29,30,29,29,30,29,30,30,1,1),
    85=>array(0,29,30,30,29,30,29,30,29,29,30,29,30,0,2,2),
    86=>array(0,29,30,30,29,30,30,29,30,29,30,29,29,0,3,3),
    87=>array(6,30,29,30,29,30,30,29,30,30,29,30,29,29,4,4),
    88=>array(0,30,29,30,29,30,29,30,30,29,30,30,29,0,5,5),
    89=>array(0,30,29,29,30,29,29,30,30,29,30,30,30,0,6,6),
    90=>array(5,29,30,29,29,30,29,29,30,29,30,30,30,30,7,7),
    91=>array(0,29,30,29,29,30,29,29,30,29,30,30,30,0,8,8),
    92=>array(0,29,30,30,29,29,30,29,29,30,29,30,30,0,9,9),
    93=>array(3,29,30,30,29,30,29,30,29,29,30,29,30,29,10,10),
    94=>array(0,30,30,30,29,30,29,30,29,29,30,29,30,0,1,11),
    95=>array(8,29,30,30,29,30,29,30,30,29,29,30,29,30,2,12),
    96=>array(0,29,30,29,30,30,29,30,29,30,30,29,29,0,3,1),
    97=>array(0,30,29,30,29,30,29,30,30,29,30,30,29,0,4,2),
    98=>array(5,30,29,29,30,29,29,30,30,29,30,30,29,30,5,3),
    99=>array(0,30,29,29,30,29,29,30,29,30,30,30,29,0,6,4),
    100=>array(0,30,30,29,29,30,29,29,30,29,30,30,29,0,7,5),
    101=>array(4,30,30,29,30,29,30,29,29,30,29,30,29,30,8,6),
    102=>array(0,30,30,29,30,29,30,29,29,30,29,30,29,0,9,7),
    103=>array(0,30,30,29,30,30,29,30,29,29,30,29,30,0,10,8),
    104=>array(2,29,30,29,30,30,29,30,29,30,29,30,29,30,1,9),
    105=>array(0,29,30,29,30,29,30,30,29,30,29,30,29,0,2,10),
    106=>array(7,30,29,30,29,30,29,30,29,30,30,29,30,30,3,11),
    107=>array(0,29,29,30,29,29,30,29,30,30,30,29,30,0,4,12),
    108=>array(0,30,29,29,30,29,29,30,29,30,30,29,30,0,5,1),
    109=>array(5,30,30,29,29,30,29,29,30,29,30,29,30,30,6,2),
    110=>array(0,30,29,30,29,30,29,29,30,29,30,29,30,0,7,3),
    111=>array(0,30,29,30,30,29,30,29,29,30,29,30,29,0,8,4),
    112=>array(4,30,29,30,30,29,30,29,30,29,30,29,30,29,9,5),
    113=>array(0,30,29,30,29,30,30,29,30,29,30,29,30,0,10,6),
    114=>array(9,29,30,29,30,29,30,29,30,30,29,30,29,30,1,7),
    115=>array(0,29,30,29,29,30,29,30,30,30,29,30,29,0,2,8),
    116=>array(0,30,29,30,29,29,30,29,30,30,29,30,30,0,3,9),
    117=>array(6,29,30,29,30,29,29,30,29,30,29,30,30,30,4,10),
    118=>array(0,29,30,29,30,29,29,30,29,30,29,30,30,0,5,11),
    119=>array(0,30,29,30,29,30,29,29,30,29,29,30,30,0,6,12),
    120=>array(4,29,30,30,30,29,30,29,29,30,29,30,29,30,7,1)
    );
##############################
#农历天干

    var $mten=array("null","甲","乙","丙","丁","戊","己","庚","辛","壬","癸");    #农历地支
    var $mtwelve=array("null","子(鼠)","丑(牛)","寅(虎)","卯(兔)","辰(龙)",
                   "巳(蛇)","午(马)","未(羊)","申(猴)","酉(鸡)","戌(狗)","亥(猪)");    #农历月份
    var $mmonth=array("闰","正","二","三","四","五","六",
                  "七","八","九","十","十一","十二","月");
    var $mday=array("null","初一","初二","初三","初四","初五","初六","初七","初八","初九","初十",
                "十一","十二","十三","十四","十五","十六","十七","十八","十九","二十",
                "廿一","廿二","廿三","廿四","廿五","廿六","廿七","廿八","廿九","三十");#农历日
##############################
#赋给初值
#天干地支
    var $ten=0;
    var $twelve=0;
    function MyPub($cYear,$cMonth,$cDay)
    {
        $total=11;#阳历总天数 至1900年12月21日
        $mtotal=0;#阴历总天数
        for ($y=1901;$y<$cYear;$y++)
        {
            $total+=365;
            if ($y%4==0) $total ++;
        }
        #再加当年的几个月
        switch ($cMonth){
                 case 12:
                      $total+=30;
                 case 11:
                      $total+=31;
                 case 10:
                      $total+=30;
                 case 9:
                      $total+=31;
                 case 8:
                      $total+=31;
                 case 7:
                      $total+=30;
                 case 6:
                      $total+=31;
                 case 5:
                      $total+=30;
                 case 4:
                      $total+=31;
                 case 3:
                      $total+=28;
                 case 2:
                      $total+=31;
               }

            #如果当年是闰年还要加一天
            if ($cYear%4==0 and $cMonth>2)
            {
                $total++;
            }

            $total+=$cDay-1;

            ##############################
            #用农历的天数累加来判断是否超过阳历的天数
            for($j=0;$j<=120;$j++)
            {
                $i=1;
                for($i=1;$i<=13;$i++)
                {
                    $mtotal+=$this->everyCMonth[$j][$i];
                    if ($mtotal>=$total)
                    {
                        $flag=1;
                        break;
                    }
                }
                if ($flag==1)break;
            }
                    return array("m"=>$j,"d"=>$i,"t"=>$total,"n"=>$mtotal);
    }
    function Cal($Year,$Month,$Day)
    {
        $Par=$this->MyPub($Year,$Month,$Day);

        $md=$this->everyCMonth[$Par["m"]][$Par["d"]]-($Par["n"]-$Par["t"]);
        $week=($Par["t"]+5)%7;
        if ($this->everyCMonth[$Par["m"]][0]<>0 and $this->everyCMonth[$Par["m"]][0]<$Par["d"])
        {
                $mm=$Par["d"]-1;
        }else{
                $mm=$Par["d"];
        }
        if ($Par["d"]==$this->everyCMonth[$Par["d"]][0]+1 and $this->everyCMonth[$Par["d"]][0]<>0)
        {
            $cMonth=$this->mmonth[0].$this->mmonth[$mm];#闰月
        }else{
            $cMonth=$this->mmonth[$mm].$this->mmonth[13];
        }
        return array("year"=>$this->mten[$this->everyCMonth[$Par["m"]][14]].$this->mtwelve[$this->everyCMonth[$Par["m"]][15]],
                    "month"=>$cMonth,
                    "day"=>$this->mday[$md],
                    "week"=>$week);
    }
}
/////调用
$test=new Calendar;
$Year=$test->Cal(2004,2,20);
echo $Year["year"]."年".$Year["month"].$Year["day"]."周".$Year["week"];
?>

原文:http://www.oschina.net/code/snippet_59519_1763

PHP+MySQL数据分页

<?php
if($_GET["page"]){
	$page=$_GET["page"];#获取要显示的页码
}else{
	$page=1;#没有参数传入时,显示第一页
}
$col=13;#每页显示记录条数
$p=($page-1)*$col;
mysql_connect("127.0.0.1:3306","root","");
mysql_query("set names gbk");
mysql_select_db("php");#数据库中需要事先建product表并插入数据,含有name和price字段。
$result=mysql_query("select * from product limit ".$p.",".$col."");
echo "
<table BORDER=1>
<tr>
<th>name</th>
<th>price</th>
</tr>
";
while($rs=mysql_fetch_object($result))
{
echo "<tr>
<td>".$rs->name."</td>
<td>".$rs->price."</td>
</tr>
";
}
echo "</table>";
$count=mysql_query("select name from product");#取得记录总条数
$num = mysql_num_rows($count)/$col;#计算页数
$num=ceil($num);#无条件小数进位确定总页数
mysql_close();
if($page==1){
	echo '上一页';
}else{
	echo "<a href=?page=".($page-1).">上一页</a>";
}
echo " 第".$page."页 ";
if($page==$num){
	echo '下一页<br>';
}else{
	echo "<a href='?page=".($page+1)."'>下一页</a><br>";
}

if($page==1){
}else{
	echo "<a href='?page=1'>第一页</a><<<";
}

for($i=-2;$i<=2;$i++){
	if(($page+$i)>$num||($page+$i)<1){

	}else{
		echo " <a href=?page=".($page+$i).">".($page+$i)."</a> ";
	}
}
if($page==$num){
}else{
	echo ">>><a href='?page=".$num."'>最后一页</a><br>";
}
?>
<form action="" method='get'>
跳转到<input type='text' name='page'>页
<input type='submit' value="确定">
</form>

原文:http://www.oschina.net/code/snippet_104588_2169

PHP无损裁剪图片

<?php
$image = "jiequ.jpg"; // 原图
$imgstream = file_get_contents($image);
$im = imagecreatefromstring($imgstream);
$x = imagesx($im);//获取图片的宽
$y = imagesy($im);//获取图片的高

// 缩略后的大小
$xx = 140;
$yy = 200;

if($x>$y){
//图片宽大于高
    $sx = abs(($y-$x)/2);
    $sy = 0;
    $thumbw = $y;
    $thumbh = $y;
} else {
//图片高大于等于宽
    $sy = abs(($x-$y)/2.5);
    $sx = 0;
    $thumbw = $x;
    $thumbh = $x;
  }
if(function_exists("imagecreatetruecolor")) {
  $dim = imagecreatetruecolor($yy, $xx); // 创建目标图gd2
} else {
  $dim = imagecreate($yy, $xx); // 创建目标图gd1
}
imageCopyreSampled ($dim,$im,0,0,$sx,$sy,$yy,$xx,$thumbw,$thumbh);
header ("Content-type: image/jpeg");
imagejpeg ($dim, false, 100);
?>

原文:http://www.oschina.net/code/snippet_99943_2522

字符串截取, 支持常用编码

/**
 * 字符串截取,支持中文和其他编码
 *
 * @static
 * @access public
 * @param string $str 需要转换的字符串
 * @param string $start 开始位置
 * @param string $length 截取长度
 * @param string $charset 编码格式
 * @param string $suffix 截断显示字符
 * @return string
 */
function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true)
{
    if(function_exists("mb_substr"))
         mb_substr($str, $start, $length, $charset);
    elseif(function_exists('iconv_substr')) {
         iconv_substr($str,$start,$length,$charset);
    }
    $re['utf-8']   = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
    $re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
    $re['gbk']    = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
    $re['big5']   = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";
    preg_match_all($re[$charset], $str, $match);
    $slice = join("",array_slice($match[0], $start, $length));
    if($suffix) return $slice."…";
    return $slice;
}

http://www.oschina.net/code/snippet_99943_2546

PHP判断输入是否是纯数字,英文,汉字等

<?php
/********
	判断输入是否是纯数字,英文,汉字等

利用php的mb_strlen和strlen函数就可以轻松得知字符串的构成
	是全英文、英汉混合、还是纯汉字。简要说明如下(以上示例程序)
	1、如果strlen返回的字符长度和mb_strlen以当前编码计算的长度一
	致,可以判断是纯英文字符串。
	2、如果strlen返回的字符长度和mb_strlen以当前编码计算的长度不一致,
	且strlen返回值同mb_strlen的返回值求余后得0可以判断为是全汉字的字符串。
	3、如果strlen返回的字符长度和mb_strlen以当前编码计算的长度不一致,
	且strlen返回值同mb_strlen的返回值求余后不为0,可以判断为是英汉混合的字符串。
*
* ****************/
$str = "456abc";
$x = mb_strlen($str,'gb2312');
$y = strlen($str); echo "------456abc----<br>";
echo "$x".'<br />';
echo "$y".'<br />';
$str = "456我是中国人abc<br />";
$x = mb_strlen($str,'gb2312');
$y = strlen($str);
echo "------456我是中国人abc----<br />";
echo "$x".'<br />'; echo "$y".'<br />';
$str = "我是中国人我爱祖国";
$x = mb_strlen($str,'gb2312');
$y = strlen($str);
echo "------我是中国人我爱祖国----<br />"; echo "$x".'<br />';
echo "$y".'<br />'; $str = "我";
$x = mb_strlen($str,'gb2312');
$y = strlen($str);
echo "------我----<br />"; echo "$x".'<br />';
echo "$y".'<br />';
$str = "我ab";
$x = mb_strlen($str,'gb2312');
$y = strlen($str);
echo "------我ab----<br />"; echo "$x".'<br />'; echo "$y".'<br />';
?>

PHP格式化日期

function ShowDate($flag=0, $timestr=NULL)
{
    // 获取周几
    $warr = array(
    "0" => 星期日,
    "1" => 星期一,
    "2" => 星期二,
    "3" => 星期三,
    "4" => 星期四,
    "5" => 星期五,
    "6" => 星期六
    );
    $i = date("w", $timeStamp);  

    // 设置北京时间并获取时间戳
    date_default_timezone_set('PRC');
    $timeStamp = NULL;
    if ($timestr)
        $timeStamp = strtotime($timestr);
    else
        $timeStamp = time();  

    // 设置时间显示格式
    $ret1 = date("Y年m月d日 H:m:s", $timeStamp) . " " . $warr[$i];
    $ret2 = date("Y-m-d H:m:s", $timeStamp) . " " . $warr[$i];
    $ret3 = date("y/m/d", $timeStamp);
    $ret = $ret1; // 默认返回第一种  

    if ($flag == 2)
        $ret = $ret2;
    else if ($flag == 3)
        $ret = $ret3;  

    return $ret;
}

原文:http://www.oschina.net/code/snippet_59519_1387

Twitter Delicious Facebook Digg Stumbleupon Favorites 更多
如非标明[原创]的内容均来自互联网,如有侵权请来信告知以便删除。