PHP MySQL 创建表

在本教程中,你将学习如何使用 PHP 在 MySQL 数据库中创建表。

使用 PHP 在 MySQL 数据库中创建表

在上一章中,我们学习了如何在 MySQL 服务器上创建数据库。现在是时候在数据库中创建一些实际保存数据的表。表格将信息组织成行和列。

SQL 语句CREATE TABLE用于在数据库中创建表格。

让我们使用该 CREATE TABLE 语句进行 SQL 查询,之后我们将通过将其传递给 PHP mysqli_query() 函数来执行此 SQL 查询,最终创建我们的表。

面向过程式创建表格

<?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$link = mysqli_connect("localhost", "root", "", "demo");
 
// Check connection
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
 
// Attempt create table query execution
$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 "Table created successfully.";
} else{
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
 
// Close connection
mysqli_close($link);
?>

面向对象式创建表格

<?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$mysqli = new mysqli("localhost", "root", "", "demo");
 
// Check connection
if($mysqli === false){
    die("ERROR: Could not connect. " . $mysqli->connect_error);
}
 
// Attempt create table query execution
$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($sql) === true){
    echo "Table created successfully.";
} else{
    echo "ERROR: Could not able to execute $sql. " . $mysqli->error;
}
 
// Close connection
$mysqli->close();
?>

PDO 式创建表格

<?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
try{
    $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", "");
    // Set the PDO error mode to exception
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
    die("ERROR: Could not connect. " . $e->getMessage());
}
 
// Attempt create table query execution
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 "Table created successfully.";
} catch(PDOException $e){
    die("ERROR: Could not able to execute $sql. " . $e->getMessage());
}
 
// Close connection
unset($pdo);
?>

在上面的例子中的 PHP 代码在 demo 数据库里创建了一个名为 persons 的表格,它有四列 *ID*,*FIRST_NAME*,last_name 和 *email*。

请注意,每个字段名称后跟一个数据类型声明; 此声明指定列可以容纳的数据类型,无论是整数,字符串,日期等。

也有一些额外的限制(也称为*修饰符*)是在前面的 SQL 语句中的列名之后指定,如 NOT NULLPRIMARY KEYAUTO_INCREMENT ,它们约束定义关于允许列中的值的规则。

有关语法的详细信息,以及 MySQL 数据库系统中可用的数据类型和约束,请查看 SQL CREATE TABLE 语句 教程。

注意: 如果换行符没有打断关键字,值,表达式等,则 SQL 语句中可能会出现任意数量的换行符。

提示: 设置 PDO::ATTR_ERRMODE 属性为 PDO::ERRMODE_EXCEPTION 来告知 PDO 在发生数据库错误时抛出异常。