PHP玩转MySQL之外键约束
南三方
在本文中,我们将学习如何通过PHP 5的一个基本抽象类使用外键约束来更新两个InnoDB表的数据。 我们将通过具体示例来说明如何通过服务器端脚本语言来使用外键约束。
一、利用外键约束更新MySQL中的数据
现在,最流行的开源关系型数据库管理系统非MySQL莫属,而MySQL又支持多个存储引擎,其中默认的也是速度较快的存储引擎为MyISAM,对许多读者来说,在开发自己数据库驱动的web应用程序之前,可能已经使用了它很长一段时间了。
然而,有时候我们的项目可能需要额外的特性,例如需要处理外键约束,这时我们就需要用到其它类型的MySQL存储引擎。在这种情况下,InnoDB表将非常适合我们的要求,尽管在性能方面可能比MyISAM表要稍逊一筹。大家知道,使用InnoDB表外键约束主要优点之一就是,它使我们可以在数据库级别处理和维护多个表之间的关系,而无需将此任务推给与这些表打交道的应用程序的某些模块或者程序库。
当然,前面的几篇文章中,我们已经就IndoDB表的外键约束做过相应介绍,但是那里都是通过手工方式来操作外键约束的。在本文中,我们将说明如何在更新和删除父表中的数据时,如何通过脚本语言来触发相应子表的级联更新和删除操作。
这里,我们博客应用程序的数据层由两个表构成,在前面的示例中,对这些表的操作,都是通过手工键入SQL命令完成的,现在,我们将介绍如何使用PHP程序设计语言来完成这些工作。之所以选择PHP,是因为它目前MySQL最常见的搭配语言,下面我们以PHP 5为例来说明如何外键约束操作两个InnoDB表。 通过阅读本文,您将更加真切地体会到外键约束的特性。
现在,我们开始见证PHP 5和外键约束结合在一起所带来的威力吧!
二、以级联方式更新和删除数据库中的数据
古人云,温故而知新,那么先让我们来回顾一下前面学过的内容吧。之前,我们介绍过如何运用外键约束级联更新和删除存放博客文章评论的InnoDB表中的数据。如果您尚未阅读前面的文章也不要紧,下面我们简单回顾这些内容。
这里是我们的示例中用到的两个表的定义,如下所示:
Code highlighting produced by Actipro CodeHighlighter (freeware)
DROP TABLE IF EXISTS `test`.`blogs`;
CREATE TABLE `test`.`blogs` (
`id` INT(10) UNSIGNED AUTO_INCREMENT,
`title` TEXT,
`content` TEXT,
`author` VARCHAR(45) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE
相关文档:
这次是Fotolog
的经验,传说中比Flickr更大的网站
,Fotolog在21台服务
器上部署了51个memcached实例,总计有254G缓存空间
可用,缓存了多达175G的内容,这个数量比很多网站的数据库都要大的多,原文是A Bunch of Great Strategies for Using Memcached and MySQL Better Together
,我这里还是选择性的翻译以及按照 ......
1。 改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"
mysql -u root -p
mysql>use mysql;
mysql>update user set& ......
运行环境:windows xp sp2
IIS v5.1
PHP 5.3.1-Win32-VC9-x86
Mysql 5.0
安装步骤:
安装IIS5.1
在 ......
由于能直接在MYSQL数据库里添加中文数据,并且能正常显示,说明我的表都使用了正确的字符编码,经过查看后,确认了,我全部的表以及字段都使用了UTF-8的编码,但是为什么程序添加的中文数据就不行呢?
其实,原因在于MYSQL服务器使用的默认编码,以及数据库的默认编码,很多人已经很小心的在建立表时关注表的字符编码,却忽略了数据库 ......