亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網(wǎng)絡(luò),我們將竭誠為您提供優(yōu)質(zhì)的服務(wù)! 誠征網(wǎng)絡(luò)推廣 | 網(wǎng)站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯(lián)系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業(yè)務(wù)咨詢
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352289
點(diǎn)擊這里給我發(fā)消息  81721488
有事點(diǎn)擊這里…  376585780
有事點(diǎn)擊這里…  872642803
有事點(diǎn)擊這里…  459248018
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  380791050
技術(shù)支持
有事點(diǎn)擊這里…  714236853
有事點(diǎn)擊這里…  719304487
有事點(diǎn)擊這里…  1208894568
有事點(diǎn)擊這里…  61352289
在線客服
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  983054746
有事點(diǎn)擊這里…  893984210
當(dāng)前位置:首頁 >> 技術(shù)文章 >> 文章瀏覽
技術(shù)文章

MySQL中的外鍵約束之PHP篇

添加時間:2014-2-14 16:40:23  添加: 思海網(wǎng)絡(luò) 
 【IT168 文檔】在本文中,我們將學(xué)習(xí)如何通過PHP 5的一個基本抽象類使用外鍵約束來更新兩個InnoDB表的數(shù)據(jù)。 我們將通過具體示例來說明如何通過服務(wù)器端腳本語言來使用外鍵約束。

  一、利用外鍵約束更新MySQL中的數(shù)據(jù)

  現(xiàn)在,最流行的開源關(guān)系型數(shù)據(jù)庫管理系統(tǒng)非MySQL莫屬,而MySQL又支持多個存儲引擎,其中默認(rèn)的也是速度較快的存儲引擎為MyISAM,對許多讀者來說,在開發(fā)自己數(shù)據(jù)庫驅(qū)動的web應(yīng)用程序之前,可能已經(jīng)使用了它很長一段時間了。

   然而,有時候我們的項(xiàng)目可能需要額外的特性,例如需要處理外鍵約束,這時我們就需要用到其它類型的MySQL存儲引擎。在這種情況下,InnoDB表將 非常適合我們的要求,盡管在性能方面可能比MyISAM表要稍遜一籌。大家知道,使用InnoDB表外鍵約束主要優(yōu)點(diǎn)之一就是,它使我們可以在數(shù)據(jù)庫級別 處理和維護(hù)多個表之間的關(guān)系,而無需將此任務(wù)推給與這些表打交道的應(yīng)用程序的某些模塊或者程序庫。

  當(dāng)然,前面的幾篇文章中,我們已經(jīng)就IndoDB表的外鍵約束做過相應(yīng)介紹,但是那里都是通過手工方式來操作外鍵約束的。在本文中,我們將說明如何在更新和刪除父表中的數(shù)據(jù)時,如何通過腳本語言來觸發(fā)相應(yīng)子表的級聯(lián)更新和刪除操作。

   這里,我們博客應(yīng)用程序的數(shù)據(jù)層由兩個表構(gòu)成,在前面的示例中,對這些表的操作,都是通過手工鍵入SQL命令完成的,現(xiàn)在,我們將介紹如何使用PHP程 序設(shè)計(jì)語言來完成這些工作。之所以選擇PHP,是因?yàn)樗壳癕ySQL最常見的搭配語言,下面我們以PHP 5為例來說明如何外鍵約束操作兩個InnoDB表。 通過閱讀本文,您將更加真切地體會到外鍵約束的特性。

  現(xiàn)在,我們開始見證PHP 5和外鍵約束結(jié)合在一起所帶來的威力吧!

  二、以級聯(lián)方式更新和刪除數(shù)據(jù)庫中的數(shù)據(jù)

  古人云,溫故而知新,那么先讓我們來回顧一下前面學(xué)過的內(nèi)容吧。之前,我們介紹過如何運(yùn)用外鍵約束級聯(lián)更新和刪除存放博客文章評論的InnoDB表中的數(shù)據(jù)。如果您尚未閱讀前面的文章也不要緊,下面我們簡單回顧這些內(nèi)容。

  這里是我們的示例中用到的兩個表的定義,如下所示:

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 IF EXISTS `test`.`comments`;

CREATE TABLE `test`.`comments` (

`id`
INT(10) UNSIGNED AUTO_INCREMENT,

`blog_id`
INT(10) UNSIGNED DEFAULT NULL,

`comment`
TEXT,

`author`
VARCHAR(45) DEFAULT NULL,

PRIMARY KEY (`id`),

KEY `blog_ind` (`blog_id`),

CONSTRAINT `comments_ibfk_1` FOREIGN KEY (`blog_id`) REFERENCES `blogs` (`id`) ON DELETE CASCADE ON UPDATE CASCADE

) ENGINE
=InnoDB DEFAULT CHARSET=utf8;

  上面的代碼定義了兩個表,需要注意一下第二個,因?yàn)樗鼮椤癰log_id”字段規(guī)定了一個約束,所以當(dāng)post表中的數(shù)據(jù)被更新和刪除時,將觸發(fā)相應(yīng)的級聯(lián)操作。

  為了幫您理解這一過程,我們可以在表中填上一些數(shù)據(jù),這時可以通過SQL語句INSERT來完成,如下:

INSERT INTO blogs (id, title, content, author) VALUES (NULL,'Title of the first blog entry', 'Content of the first blog entry', 'IAN')

INSERT INTO comments (id, blog_id, comment, author) VALUES (NULL, 1, 'Commenting first blog entry', 'Tom'), (NULL, 1, 'Commenting first blog entry', 'Rose')

  現(xiàn)在,我們唯一的一條博客數(shù)據(jù)已經(jīng)有了兩條評論數(shù)據(jù),如果由于任何原因需要更新博客及其評論數(shù)據(jù)的話,可以通過下列命令完成:

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

  這看起來非常簡單,但是,如果我說將博客數(shù)據(jù)連同相應(yīng)的評論數(shù)據(jù)一同刪除會更加簡單,您能會相信嗎?如果不信的話,請看下面的SQL語句:

DELETE FROM blogs WHERE id = 2

  如您所見,這就是刪除指定博客及其評論所需的全部SQL代碼,這足以證明通過外鍵約束維護(hù)兩個InnoDB表的完整性到底有多么的方便。

  迄今為止,我們已經(jīng)簡單回顧之前所學(xué)的內(nèi)容,接下來,我們將繼續(xù)探索這些表的約束的各種優(yōu)點(diǎn)。 就像本文開頭部分介紹的那樣,我們將開始講解如何通過PHP 5內(nèi)置的MySQL抽象類來生成對我們的示例表的級聯(lián)更新。

  三、利用PHP 5以級聯(lián)方式更新數(shù)據(jù)庫

  好了,現(xiàn)在開始詳細(xì)介紹如何使用流行的服務(wù)器端腳本語言PHP 5來以級聯(lián)方式更新我們的示例表。為此,我們需要編寫允許我們訪問上面定義的InnoDB表的代碼,就本例而言,我們使用PHP 5的MySQL抽象類來達(dá)此目的。下面給出具體的代碼:

class MySQL

{

private $result
= NULL;

private $link
= NULL;



//連接到MySQL

public function __construct($host, $user, $password, $database)

{

if (FALSE === ($this->link = mysqli_connect($host, $user, $password, $database)))

{

throw new Exception(
'Error : ' . mysqli_connect_error());

}

}



//執(zhí)行查詢

public function query($query)

{

if (is_string($query) AND empty($query) === FALSE)

{

if (FALSE === ($this->result = mysqli_query($this->link, $query)))

{

throw new Exception(
'Error performing query ' . $query . ' Error message :' .mysqli_error($this->link));

}

}

}



//從結(jié)果集返回?cái)?shù)據(jù)

public function fetch()

{

if (FALSE === ($row = mysqli_fetch_object($this->result)))

{

mysqli_free_result($this
->result);

return FALSE;

}

return $row;

}



//獲取插入ID

public function getInsertID()

{

return mysqli_insert_id($this->link);

}

//結(jié)果集中的行數(shù)

public function countRows()

{

if ($this->result !== NULL)

{

return mysqli_num_rows($this->result);

}

}

//關(guān)閉數(shù)據(jù)庫連接

function __destruct()

{

mysqli_close($this
->link);

}

}

  如上所示,上面定義的MySQL抽象類十分簡單,它提供了許多常用的方法,用于執(zhí)行查詢、統(tǒng)計(jì)結(jié)果集行數(shù)以及獲取插入ID。需要格外注意的是,這個類內(nèi)部使用了PHP擴(kuò)展mysqli來跟MySQL打交道,所以整體看來是很容易理解的。

  好了,我們已經(jīng)定義了一個可以用于跟MySQL數(shù)據(jù)庫相交互的PHP 5類,現(xiàn)在我們要做的就是利用它的API對前面定義的InnoDB表執(zhí)行級聯(lián)更新。

  四、MySQL抽象類

  現(xiàn)在,為了演示如何使用上述的MySQL類級聯(lián)更新前文中的數(shù)據(jù)表,我們需要重新定義那兩個表,以便使其只能執(zhí)行這些更新的操作。這里是它們的定義,這兩個表將作為我們的示例博客應(yīng)用程序的數(shù)據(jù)層:

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 IF EXISTS `test`.`comments`;

CREATE TABLE `test`.`comments` (

`id`
INT(10) UNSIGNED AUTO_INCREMENT,

`blog_id`
INT(10) UNSIGNED DEFAULT NULL,

`comment`
TEXT,

`author`
VARCHAR(45) DEFAULT NULL,

PRIMARY KEY (`id`),

KEY `blog_ind` (`blog_id`),

CONSTRAINT `comments_ibfk_1` FOREIGN KEY (`blog_id`) REFERENCES `blogs` (`id`) ON UPDATE CASCADE

) ENGINE
=InnoDB DEFAULT CHARSET=utf8;

   如上所述,通過給最后一個表中的blog_id字段規(guī)定外鍵約束,我們已經(jīng)把兩個表聯(lián)系在了一起,接下來讓我們使用前面定義的MySQL抽象類給它們填 入必要的數(shù)據(jù)。我們假設(shè)這個類被單獨(dú)放入一個名為mysqlclass.php文件中,下面的腳本將向blog表中插入單篇博客文章,并向 comments表中插入兩則評論:

require_once 'mysqlclass.php';

$db
= new MySQL('host', 'user', 'password', 'test');

//在blogs數(shù)據(jù)庫表中插入新數(shù)據(jù)

$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數(shù)據(jù)庫表中插入新評論

$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類能夠抽象地訪問數(shù)據(jù)庫,但是相應(yīng)的SQL查詢還得手工編寫。同時,它正好可以使我們可以展示每當(dāng)?shù)谝粋表中的數(shù)據(jù)更新時,如何使用該類來更新與第一個數(shù)據(jù)表相關(guān)的評論。

  執(zhí)行該級聯(lián)更新操作的代碼片斷如下所示:

//更新blogs表中的數(shù)據(jù)(comments表中的有關(guān)數(shù)據(jù)將自動更新)

$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表打交道的抽象類,但是觸發(fā)級聯(lián)更新所需的SQL代碼仍然保持高度簡潔。這說明,各表之間的關(guān)系的完整性仍然是在數(shù)據(jù)庫級別進(jìn)行維護(hù)的,而不是由PHP 5應(yīng)用程序所維護(hù)的。

  五、小結(jié)

  到目前為止,我們詳細(xì)講解了如何通過PHP 5內(nèi)置的抽象類使用外鍵約束來更新兩個InnoDB表中的數(shù)據(jù)。 我們希望本文能夠?qū)δ梅⻊?wù)器端腳本使用外鍵約束時能夠有所啟發(fā)。在后面的文章中,我們將繼續(xù)探討外鍵約束有關(guān)的內(nèi)容。

  【IT168 文檔】在本文中,我們將學(xué)習(xí)如何通過PHP 5的一個基本抽象類使用外鍵約束來更新兩個InnoDB表的數(shù)據(jù)。 我們將通過具體示例來說明如何通過服務(wù)器端腳本語言來使用外鍵約束。

  一、利用外鍵約束更新MySQL中的數(shù)據(jù)

  現(xiàn)在,最流行的開源關(guān)系型數(shù)據(jù)庫管理系統(tǒng)非MySQL莫屬,而MySQL又支持多個存儲引擎,其中默認(rèn)的也是速度較快的存儲引擎為MyISAM,對許多讀者來說,在開發(fā)自己數(shù)據(jù)庫驅(qū)動的web應(yīng)用程序之前,可能已經(jīng)使用了它很長一段時間了。

   然而,有時候我們的項(xiàng)目可能需要額外的特性,例如需要處理外鍵約束,這時我們就需要用到其它類型的MySQL存儲引擎。在這種情況下,InnoDB表將 非常適合我們的要求,盡管在性能方面可能比MyISAM表要稍遜一籌。大家知道,使用InnoDB表外鍵約束主要優(yōu)點(diǎn)之一就是,它使我們可以在數(shù)據(jù)庫級別 處理和維護(hù)多個表之間的關(guān)系,而無需將此任務(wù)推給與這些表打交道的應(yīng)用程序的某些模塊或者程序庫。

  當(dāng)然,前面的幾篇文章中,我們已經(jīng)就IndoDB表的外鍵約束做過相應(yīng)介紹,但是那里都是通過手工方式來操作外鍵約束的。在本文中,我們將說明如何在更新和刪除父表中的數(shù)據(jù)時,如何通過腳本語言來觸發(fā)相應(yīng)子表的級聯(lián)更新和刪除操作。

   這里,我們博客應(yīng)用程序的數(shù)據(jù)層由兩個表構(gòu)成,在前面的示例中,對這些表的操作,都是通過手工鍵入SQL命令完成的,現(xiàn)在,我們將介紹如何使用PHP程 序設(shè)計(jì)語言來完成這些工作。之所以選擇PHP,是因?yàn)樗壳癕ySQL最常見的搭配語言,下面我們以PHP 5為例來說明如何外鍵約束操作兩個InnoDB表。 通過閱讀本文,您將更加真切地體會到外鍵約束的特性。

  現(xiàn)在,我們開始見證PHP 5和外鍵約束結(jié)合在一起所帶來的威力吧!

  二、以級聯(lián)方式更新和刪除數(shù)據(jù)庫中的數(shù)據(jù)

  古人云,溫故而知新,那么先讓我們來回顧一下前面學(xué)過的內(nèi)容吧。之前,我們介紹過如何運(yùn)用外鍵約束級聯(lián)更新和刪除存放博客文章評論的InnoDB表中的數(shù)據(jù)。如果您尚未閱讀前面的文章也不要緊,下面我們簡單回顧這些內(nèi)容。

  這里是我們的示例中用到的兩個表的定義,如下所示:

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 IF EXISTS `test`.`comments`;

CREATE TABLE `test`.`comments` (

`id`
INT(10) UNSIGNED AUTO_INCREMENT,

`blog_id`
INT(10) UNSIGNED DEFAULT NULL,

`comment`
TEXT,

`author`
VARCHAR(45) DEFAULT NULL,

PRIMARY KEY (`id`),

KEY `blog_ind` (`blog_id`),

CONSTRAINT `comments_ibfk_1` FOREIGN KEY (`blog_id`) REFERENCES `blogs` (`id`) ON DELETE CASCADE ON UPDATE CASCADE

) ENGINE
=InnoDB DEFAULT CHARSET=utf8;

  上面的代碼定義了兩個表,需要注意一下第二個,因?yàn)樗鼮椤癰log_id”字段規(guī)定了一個約束,所以當(dāng)post表中的數(shù)據(jù)被更新和刪除時,將觸發(fā)相應(yīng)的級聯(lián)操作。

  為了幫您理解這一過程,我們可以在表中填上一些數(shù)據(jù),這時可以通過SQL語句INSERT來完成,如下:

INSERT INTO blogs (id, title, content, author) VALUES (NULL,'Title of the first blog entry', 'Content of the first blog entry', 'IAN')

INSERT INTO comments (id, blog_id, comment, author) VALUES (NULL, 1, 'Commenting first blog entry', 'Tom'), (NULL, 1, 'Commenting first blog entry', 'Rose')

  現(xiàn)在,我們唯一的一條博客數(shù)據(jù)已經(jīng)有了兩條評論數(shù)據(jù),如果由于任何原因需要更新博客及其評論數(shù)據(jù)的話,可以通過下列命令完成:

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

  這看起來非常簡單,但是,如果我說將博客數(shù)據(jù)連同相應(yīng)的評論數(shù)據(jù)一同刪除會更加簡單,您能會相信嗎?如果不信的話,請看下面的SQL語句:

DELETE FROM blogs WHERE id = 2

  如您所見,這就是刪除指定博客及其評論所需的全部SQL代碼,這足以證明通過外鍵約束維護(hù)兩個InnoDB表的完整性到底有多么的方便。

  迄今為止,我們已經(jīng)簡單回顧之前所學(xué)的內(nèi)容,接下來,我們將繼續(xù)探索這些表的約束的各種優(yōu)點(diǎn)。 就像本文開頭部分介紹的那樣,我們將開始講解如何通過PHP 5內(nèi)置的MySQL抽象類來生成對我們的示例表的級聯(lián)更新。


  三、利用PHP 5以級聯(lián)方式更新數(shù)據(jù)庫

  好了,現(xiàn)在開始詳細(xì)介紹如何使用流行的服務(wù)器端腳本語言PHP 5來以級聯(lián)方式更新我們的示例表。為此,我們需要編寫允許我們訪問上面定義的InnoDB表的代碼,就本例而言,我們使用PHP 5的MySQL抽象類來達(dá)此目的。下面給出具體的代碼:

class MySQL

{

private $result
= NULL;

private $link
= NULL;



//連接到MySQL

public function __construct($host, $user, $password, $database)

{

if (FALSE === ($this->link = mysqli_connect($host, $user, $password, $database)))

{

throw new Exception(
'Error : ' . mysqli_connect_error());

}

}



//執(zhí)行查詢

public function query($query)

{

if (is_string($query) AND empty($query) === FALSE)

{

if (FALSE === ($this->result = mysqli_query($this->link, $query)))

{

throw new Exception(
'Error performing query ' . $query . ' Error message :' .mysqli_error($this->link));

}

}

}



//從結(jié)果集返回?cái)?shù)據(jù)

public function fetch()

{

if (FALSE === ($row = mysqli_fetch_object($this->result)))

{

mysqli_free_result($this
->result);

return FALSE;

}

return $row;

}



//獲取插入ID

public function getInsertID()

{

return mysqli_insert_id($this->link);

}

//結(jié)果集中的行數(shù)

public function countRows()

{

if ($this->result !== NULL)

{

return mysqli_num_rows($this->result);

}

}

//關(guān)閉數(shù)據(jù)庫連接

function __destruct()

{

mysqli_close($this
->link);

}

}

  如上所示,上面定義的MySQL抽象類十分簡單,它提供了許多常用的方法,用于執(zhí)行查詢、統(tǒng)計(jì)結(jié)果集行數(shù)以及獲取插入ID。需要格外注意的是,這個類內(nèi)部使用了PHP擴(kuò)展mysqli來跟MySQL打交道,所以整體看來是很容易理解的。

  好了,我們已經(jīng)定義了一個可以用于跟MySQL數(shù)據(jù)庫相交互的PHP 5類,現(xiàn)在我們要做的就是利用它的API對前面定義的InnoDB表執(zhí)行級聯(lián)更新。


  四、MySQL抽象類

  現(xiàn)在,為了演示如何使用上述的MySQL類級聯(lián)更新前文中的數(shù)據(jù)表,我們需要重新定義那兩個表,以便使其只能執(zhí)行這些更新的操作。這里是它們的定義,這兩個表將作為我們的示例博客應(yīng)用程序的數(shù)據(jù)層:

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 IF EXISTS `test`.`comments`;

CREATE TABLE `test`.`comments` (

`id`
INT(10) UNSIGNED AUTO_INCREMENT,

`blog_id`
INT(10) UNSIGNED DEFAULT NULL,

`comment`
TEXT,

`author`
VARCHAR(45) DEFAULT NULL,

PRIMARY KEY (`id`),

KEY `blog_ind` (`blog_id`),

CONSTRAINT `comments_ibfk_1` FOREIGN KEY (`blog_id`) REFERENCES `blogs` (`id`) ON UPDATE CASCADE

) ENGINE
=InnoDB DEFAULT CHARSET=utf8;

   如上所述,通過給最后一個表中的blog_id字段規(guī)定外鍵約束,我們已經(jīng)把兩個表聯(lián)系在了一起,接下來讓我們使用前面定義的MySQL抽象類給它們填 入必要的數(shù)據(jù)。我們假設(shè)這個類被單獨(dú)放入一個名為mysqlclass.php文件中,下面的腳本將向blog表中插入單篇博客文章,并向 comments表中插入兩則評論:

require_once 'mysqlclass.php';

$db
= new MySQL('host', 'user', 'password', 'test');

//在blogs數(shù)據(jù)庫表中插入新數(shù)據(jù)

$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數(shù)據(jù)庫表中插入新評論

$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類能夠抽象地訪問數(shù)據(jù)庫,但是相應(yīng)的SQL查詢還得手工編寫。同時,它正好可以使我們可以展示每當(dāng)?shù)谝粋表中的數(shù)據(jù)更新時,如何使用該類來更新與第一個數(shù)據(jù)表相關(guān)的評論。

  執(zhí)行該級聯(lián)更新操作的代碼片斷如下所示:

//更新blogs表中的數(shù)據(jù)(comments表中的有關(guān)數(shù)據(jù)將自動更新)

$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表打交道的抽象類,但是觸發(fā)級聯(lián)更新所需的SQL代碼仍然保持高度簡潔。這說明,各表之間的關(guān)系的完整性仍然是在數(shù)據(jù)庫級別進(jìn)行維護(hù)的,而不是由PHP 5應(yīng)用程序所維護(hù)的。

  五、小結(jié)

  到目前為止,我們詳細(xì)講解了如何通過PHP 5內(nèi)置的抽象類使用外鍵約束來更新兩個InnoDB表中的數(shù)據(jù)。 我們希望本文能夠?qū)δ梅⻊?wù)器端腳本使用外鍵約束時能夠有所啟發(fā)。在后面的文章中,我們將繼續(xù)探討外鍵約束有關(guān)的內(nèi)容。

關(guān)鍵字:MySQL數(shù)據(jù)庫、PHP、服務(wù)器

分享到:

頂部 】 【 關(guān)閉
版權(quán)所有:佛山思海電腦網(wǎng)絡(luò)有限公司 ©1998-2024 All Rights Reserved.
聯(lián)系電話:(0757)22630313、22633833
中華人民共和國增值電信業(yè)務(wù)經(jīng)營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網(wǎng)站公安備案編號:44060602000007 交互式欄目專項(xiàng)備案編號:200303DD003  
察察 工商 網(wǎng)安 舉報(bào)有獎  警警  手機(jī)打開網(wǎng)站