妙用phpMyBackupPro备份恢复Mysql数据库

展开阅读全文

妙用触发器有效的管理 MySQL数据库

03-07

在SQL中,名词触发器指“在数据库中为响应一个特殊表格中的某些事件而自动执行的程序代码。”(Wikipedia)说得简单一些,它是在一个特殊的数据库事件,如INSERT或DELETE发生时,自动激活的一段代码。触发器可方便地用于日志记录、对单个表格到其他链接式表格进行自动的“层叠式”更改、或保证对表格关系进行自动更新。当一个新整数值增加到数据库域中时,自动更新运行的总数的代码段是一个触发器。自动记录对一个特殊数据库表格所作更改的SQL命令块也是一个触发器实例。 rnrn触发器是MySQL 5.x的新功能,随着5.x代码树新版本的出现,这一功能也逐渐得到改善。在本文中,我将简单介绍如何定义并使用触发器,查看触发器状态,并如何在使用完毕后删除触发器。我还将为你展示一个触发器在现实世界中的应用实例,并检验它对数据库记录的改变。 rnrn一个简单实例 rnrn通过简单(虽然是人为的)实例来说明是了解MySQL触发器应用的最佳办法。首先我们建立两个单域的表格。一个表格中为姓名列表(表格名:data),另一个表格中是所插入字符的字符数(表格名:chars)。我希望在data表格中定义一个触发器,每次在其中插入一个新姓名时,chars表格中运行的总数就会根据新插入记录的字符数目进行自动更新。 rnrnrnmysql> CREATE TABLE data (name VARCHAR(255));rnrnQuery OK, 0 rows affected (0.09 sec)rnrnmysql> CREATE TABLE chars (count INT(10));rnrnQuery OK, 0 rows affected (0.07 sec)rnrnmysql> INSERT INTO chars (count) VALUES (0);rnrnQuery OK, 1 row affected (0.00 sec)rnrnmysql> CREATE TRIGGER t1 AFTER INSERT ONrnrndata FOR EACH ROW UPDATE chars SET count = count + CHAR_LENGTH(NEW.name);rnrnQuery OK, 0 rows affected (0.01 sec) rnrn理解上面代码的关键在于CREATE TRIGGER命令,它被用来定义一个新触发器。这个命令建立一个新触发器,假定的名称为t1,每次有一个新记录插入到data表格中时,t1就被激活。 rnrn在这个触发器中有两个重要的子句: rnrnAFTER INSERT子句表明触发器在新记录插入data表格后激活。 rnrnUPDATE chars SET count = count + CHAR_LENGTH(NEW.name)子句表示触发器激活后执行的SQL命令。在本例中,该命令表明用新插入的data.name域的字符数来更新chars.count栏。这一信息可通过内置的MySQL函数CHAR_LENGTH()获得。 rnrn放在源表格域名前面的NEW关键字也值得注意。这个关键字表明触发器应考虑域的new值(也就是说,刚被插入到域中的值)。MySQL还支持相应的OLD前缀,可用它来指域以前的值。 rnrn你可以通过调用SHOW TRIGGER命令来检查触发器是否被激活。 rnrnrnmysql> SHOW TRIGGERS\Grnrn*************************** rnrnrnrn原文地址:http://www.mylinAAAux.com.cn/HTML/1173064975774.html(去掉AAA) 论坛

php备份恢复mysql数据库中文乱码如何解决?

02-15

请教大家一个问题:rn近来项目中需要一个备份恢复mysql的功能,于是找到这个看上去非常好用的代码,但是备份出的sql文件里的中文是乱码,我尝试修改了mydb.php中第12行的编码(把gbk改成了utf8),但是不行,请教应该怎么办?(我的数据库编码是utf8)rnrn先谢了,望前辈不吝赐教!rnrn整个代码就3个文件,结构很清晰:rn这是三个文件的压缩档:http://dl.dbank.com/c0wyzttid5rn这是mydb.php的代码rnlinkid) @$this->linkid = mysql_connect($host, $username, $password) or die("连接服务器失败.");rn @mysql_select_db($database,$this->linkid) or die("无法打开数据库");rn mysql_query('set names utf8');rn return $this->linkid;rnrnfunction query($sql)rn if($this->sqlid=mysql_query($sql,$this->linkid)) return $this->sqlid;rn else rn $this->err_report($sql,mysql_error);rn return false;rn rnrnfunction nr($sql_id="")rn if(!$sql_id) $sql_id=$this->sqlid;rn return mysql_num_rows($sql_id);rnrnfunction nf($sql_id="")rn if(!$sql_id) $sql_id=$this->sqlid;rn return mysql_num_fields($sql_id);rnrnfunction nextrecord($sql_id="")rn if(!$sql_id) $sql_id=$this->sqlid;rn if($this->record=mysql_fetch_array($sql_id)) return $this->record;rn else return false;rn rnrnfunction f($name)rn rn if($this->record[$name]) return $this->record[$name];rn else return false;rn rnrnfunction close() mysql_close($this->linkid);rnrnfunction lock($tblname,$op="WRITE")rn if(mysql_query("lock tables ".$tblname." ".$op)) return true; else return false;rnrnfunction unlock()rn if(mysql_query("unlock tables")) return true; else return false;rnrnfunction ar() rn return @mysql_affected_rows($this->linkid);rn rnrnfunction i_id() rn return mysql_insert_id();rn rnrnfunction err_report($sql,$err)rn rnecho "Mysql查询错误 ";rnecho "查询语句:".$sql." ";rnecho "错误信息:".$err;rn rn/****************************************类结束***************************/rn?> 论坛

没有更多推荐了,返回首页