在本教程中,您將學(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á)式等。