在本教程中,您將學(xué)習(xí)如何使用PHP在MySQL數(shù)據(jù)庫中創(chuàng)建表。
在上一章中,我們學(xué)習(xí)了如何在MySQL服務(wù)器上創(chuàng)建數(shù)據(jù)庫?,F(xiàn)在是時候在數(shù)據(jù)庫內(nèi)部創(chuàng)建一些表,這些表實際上將保存數(shù)據(jù)。表格將信息組織成行和列。
SQL CREATE TABLE語句用于在數(shù)據(jù)庫中創(chuàng)建表。
讓我們使用該CREATE TABLE語句進(jìn)行SQL查詢,此后,我們將通過將其傳遞給PHP mysqli_query()函數(shù)以最終創(chuàng)建表來執(zhí)行此SQL查詢。
<?php /* 嘗試MySQL服務(wù)器連接。 假設(shè)您正在運行MySQL。 具有默認(rèn)設(shè)置的服務(wù)器(沒有密碼的用戶“root”) */ $link = mysqli_connect("localhost", "root", ""); // 檢查連接 if($link === false){ die("錯誤:無法連接。" . mysqli_connect_error()); } //嘗試執(zhí)行CREATE TABLE查詢執(zhí)行 $sql = "CREATE TABLE persons( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, first_name VARCHAR(30) NOT NULL, last_name VARCHAR(30) NOT NULL, email VARCHAR(70) NOT NULL UNIQUE )"; if(mysqli_query($link, $sql)){ echo "已成功創(chuàng)建表。"; } else{ echo "錯誤:無法執(zhí)行 $sql. " . mysqli_error($link); } //關(guān)閉連接 mysqli_close($link); ?>
<?php /* 嘗試MySQL服務(wù)器連接。 假設(shè)您正在運行MySQL。 具有默認(rèn)設(shè)置的服務(wù)器(沒有密碼的用戶“root”) */ try{ $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", ""); //將PDO錯誤模式設(shè)置為異常 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e){ die("錯誤:無法連接。 " . $e->getMessage()); } //嘗試執(zhí)行CREATE TABLE查詢執(zhí)行 try{ $sql = "CREATE TABLE persons( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, first_name VARCHAR(30) NOT NULL, last_name VARCHAR(30) NOT NULL, email VARCHAR(70) NOT NULL UNIQUE )"; $pdo->exec($sql); echo "已成功創(chuàng)建表。"; } catch(PDOException $e){ die("錯誤:無法執(zhí)行 $sql. " . $e->getMessage()); } //關(guān)閉連接 unset($pdo); ?>
上例中的PHP代碼在演示數(shù)據(jù)庫中創(chuàng)建了一個名為person的表,該表具有id,first_name,last_name和email四列。
注意,每個字段名稱后都有一個數(shù)據(jù)類型聲明; 該聲明指定列可以保存的數(shù)據(jù)類型,整數(shù),字符串,日期等。
在前面的SQL語句中,在列名之后指定了一些附加約束(也稱為修飾符),如NOT NULL、PRIMARY KEY、AUTO_INCREMENT等。約束定義有關(guān)列中允許的值的規(guī)則。
請查看有關(guān)SQL CREATE TABLE語句的教程,以獲取有關(guān)語法以及MySQL數(shù)據(jù)庫系統(tǒng)中可用數(shù)據(jù)類型和約束的詳細(xì)信息。
注意: SQL語句中可以出現(xiàn)任意數(shù)量的換行符,前提是任何換行符都不會中斷關(guān)鍵字、值、表達(dá)式等。