以下是使用PHP和MySQLi快速新建数据库表的完整代码示例: <?php $servername = "localhost"; $username = "root"; $password = ""; $dbname = "testdb"; // 创建连接 $conn = new mysqli($servername, $username, $password); // 检查连接 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } // 创建数据库 $sql = "CREATE DATABASE IF NOT EXISTS " . $dbname; if ($conn->query($sql) === TRUE) { echo "数据库创建成功"; } $conn->close(); ?> 然后新建表: <?php $servername = "localhost"; $username = "root"; $password = ""; $dbname = "testdb"; // 创建连接 $conn = new mysqli($servername, $username, $password, $dbname); // 检查连接 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } // sql 创建数据表 $sql = "CREATE TABLE IF NOT EXISTS users ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, firstname VARCHAR(30) NOT NULL, lastname VARCHAR(30) NOT NULL, email VARCHAR(50), reg_date TIMESTAMP )"; if ($conn->query($sql) === TRUE) { echo "表 users 创建成功"; } else { echo "Error creating table: " . $conn->error; } $conn->close(); ?>
实用技巧一:使用PDO连接更安全
PDO比MySQLi更推荐,因为它支持更多数据库类型,并且预处理语句更安全。 <?php try { $pdo = new PDO("mysql:host=localhost;dbname=testdb", $username, $password); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "CREATE TABLE IF NOT EXISTS products ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, price DECIMAL(10,2) )"; $pdo->exec($sql); echo "表创建成功"; } catch(PDOException $e) { echo "错误: " . $e->getMessage(); } $pdo = null; ?> 技巧:总是用try-catch处理异常,避免页面崩溃。
实用技巧二:检查表是否存在再创建
在创建表前,先检查是否存在,避免重复错误: <?php $sql = "SHOW TABLES LIKE 'users'"; $result = $conn->query($sql); if ($result->num_rows == 0) { // 表不存在,创建表 $createTableSQL = "CREATE TABLE users (... )"; $conn->query($createTableSQL); echo "表已创建"; } else { echo "表已存在"; } ?> 这个技巧特别适合开发阶段,防止重复运行脚本出错。
实用技巧三:批量创建多个表
一次创建多个相关表:
<?php
$tables = [
"CREATE TABLE users (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50))",
"CREATE TABLE orders (id INT PRIMARY KEY AUTO_INCREMENT, user_id INT, FOREIGN KEY (user_id) REFERENCES users(id))",
"CREATE TABLE products (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), price DECIMAL(10,2))"
];
foreach($tables as $sql) {
if ($conn->query($sql) === TRUE) {
echo "表创建成功
";
}
}
?>
注意外键约束,让数据关系更规范。
实用技巧四:添加索引提升查询速度
创建表时就规划好索引: <?php $sql = "CREATE TABLE posts ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(200) NOT NULL, content TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, INDEX idx_title (title), INDEX idx_created (created_at) )"; $conn->query($sql); ?> 常用字段都要加索引,特别是查询频繁的列。
FAQ
Q: PHP连接数据库总是报错怎么办?
A: 检查host、username、password是否正确,MySQL服务是否启动,端口是否是3306。
Q: 怎么查看表结构?
A: 用DESCRIBE 表名; 或 SHOW CREATE TABLE 表名;
Q: 创建表后怎么插入测试数据?
A: 用INSERT INTO 表名 (字段) VALUES (值); 语句,记得用引号包围字符串。
Q: 外键约束创建失败怎么办?
A: 确保引用的表先创建,字段类型要完全一致,先禁用外键检查再建表:SET FOREIGN_KEY_CHECKS=0;