PHP 创建 MySQL 表
每一个表在数据库中都有唯一的名称
每一个表都由行和列组成
行是每一条记录(数据)
列是每一个字段(field)
本章我们将学习如何使用 PHP 在 MySQL 数据库 twle 中创建表 customer
选择数据库
创建表前,我们需要使用 use twle 来选择要操作的数据库
use twle;
SQL 语句
我们的 customer
表有 5 个字段 "id", "firstname", "lastname", "email" 和 "created_at"
MySQL 创建表 SQL 语句为
CREATE TABLE customer ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, firstname VARCHAR(30) NOT NULL, lastname VARCHAR(30) NOT NULL, email VARCHAR(50), created_at TIMESTAMP )
数据类型指定列可以存储什么类型的数据
完整的数据类型请参考我们的 数据类型参考手册
在设置了数据类型后,我们可以为没个列指定其他选项的属性
属性 | 描述 |
---|---|
NOT NULL | 每一行都必须含有值(不能为空),null 值是不允许的 |
DEFAULT value | 设置默认值 |
UNSIGNED | 使用无符号数值类型,0 及正数 |
AUTO INCREMENT | 设置 MySQL 字段的值在新增记录时每次自动增长 1 |
PRIMARY KEY | 设置数据表中每条记录的唯一标识 通常列的 PRIMARY KEY 设置为 ID 数值,与 AUTO_INCREMENT 一起使用 |
每个表都应该有一个主键(本列为 "id" 列),主键必须包含唯一的值
面向对象 MySQLi
<?php $servername = "localhost"; $username = "root"; $password = ""; $dbname = "twle"; // 创建连接 $conn = new mysqli($servername, $username, $password, $dbname); // 检测连接 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } // 使用 sql 创建数据表 $sql = <<<END CREATE TABLE customer ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, firstname VARCHAR(30) NOT NULL, lastname VARCHAR(30) NOT NULL, email VARCHAR(50), created_at TIMESTAMP ) END; if ($conn->query($sql) === TRUE) { echo "Table customer created successfully"; } else { echo "创建数据表错误: " , $conn->error; } $conn->close();
面向过程 MySQLi
<?php $servername = "localhost"; $username = "root"; $password = ""; $dbname = "twle"; // 创建连接 $conn = mysqli_connect($servername, $username, $password,$dbname); // 检测连接 if (!$conn) { die("连接失败: " . mysqli_connect_error()); } // 使用 sql 创建数据表 $sql = <<<END CREATE TABLE customer ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, firstname VARCHAR(30) NOT NULL, lastname VARCHAR(30) NOT NULL, email VARCHAR(50), created_at TIMESTAMP ) END; if (mysqli_query($conn, $sql)) { echo "数据表 customer 创建成功"; } else { echo "创建数据表错误: " . mysqli_error($conn); } mysqli_close($conn);
PDO
<?php $servername = "localhost"; $username = "root"; $password = ""; $dbname = "twle"; try { $conn = new PDO("mysql:host=$servername;dbname=$dbname",$username, $password); // 设置 PDO 错误模式,用于抛出异常 $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // 使用 sql 创建数据表 $sql = <<<END CREATE TABLE customer ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, firstname VARCHAR(30) NOT NULL, lastname VARCHAR(30) NOT NULL, email VARCHAR(50), created_at TIMESTAMP ) END; // 使用 exec() ,没有结果返回 $conn->exec($sql); echo "数据表 customer 创建成功"; } catch(PDOException $e) { echo $sql, "<br>" ,$e->getMessage(); } $conn = null;