玩转MySQL中的外键约束之PHP篇(5)
来源:asp之家 时间:2010-03-18 10:20:00
我们假设这个类被单独放入一个名为mysqlclass.php文件中,下面的脚本将向blog表中插入单篇博客文章,并向comments表中插入两则评论:
require_once 'mysqlclass.php';
$db = new MySQL('host', 'user', 'password', 'test');
//在blogs数据库表中插入新数据
$db->query("INSERT INTO blogs (id, title, content, author) VALUES (NULL,'Title of the first blog entry', 'Content of the first blog entry', 'IAN')");
$insid = $db->getInsertID();
//在comments数据库表中插入新评论
$db->query("INSERT INTO comments (id, blog_id, comment, author) VALUES (NULL, $insid, 'Commenting first blog entry', 'Tom'), (NULL, $insid, 'Commenting first blog entry', 'Rose')");
虽然我们的这个MySQL类能够抽象地访问数据库,但是相应的SQL查询还得手工编写。同时,它正好可以使我们可以展示每当第一个表中的数据更新时,如何使用该类来更新与第一个数据表相关的评论。
执行该级联更新操作的代码片断如下所示:
//更新blogs表中的数据(comments表中的有关数据将自动更新)
$db->query("UPDATE blogs SET id = 2, title = 'Title of the first blog entry', content = 'Content of the first blog entry', author = 'John Doe' WHERE id = 1");
尽管另外添加了一个与上述InnoDB表打交道的抽象类,但是触发级联更新所需的SQL代码仍然保持高度简洁。这说明,各表之间的关系的完整性仍然是在数据库级别进行维护的,而不是由PHP 5应用程序所维护的。
五、小结
到目前为止,我们详细讲解了如何通过PHP 5内置的抽象类使用外键约束来更新两个InnoDB表中的数据。 我们希望本文能够对您利用服务器端脚本使用外键约束时能够有所启发。在后面的文章中,我们将继续探讨外键约束有关的内容。