PHP 創建表
在 PHP 中,我們可以使用 SQL 語句來創建數據庫表。此外,PHP 還提供了一種對象關系映射(ORM)庫,如 Doctrine、Propel 等,可以方便地創建和管理數據庫表。
使用 SQL 語句創建表
在 PHP 中,我們可以通過 mysqli 或 PDO 擴展連接到數據庫,使用 SQL 語句操作數據庫。下面是使用 mysqli 擴展創建一個用戶表的示例:
<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; // 連接數據庫 $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) { die("連接失敗: " . $conn->connect_error); } // 創建用戶表 $sql = "CREATE TABLE Users ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30) NOT NULL, email VARCHAR(50), password VARCHAR(30) NOT NULL, reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP )"; if ($conn->query($sql) === TRUE) { echo "用戶表創建成功"; } else { echo "創建失敗: " . $conn->error; } $conn->close(); ?>
上面的示例中:
- 創建了一個名為 Users 的表。
- 表包含 id、name、email、password、reg_date 五個列。
- id 列使用 INT(6) UNSIGNED 類型,自增并作為主鍵。
- name、email、password 列使用 VARCHAR 類型。
- reg_date 列使用 TIMESTAMP 類型,設置默認值為當前時間,并且在更新數據時自動更新。
使用 ORM 庫創建表
使用 ORM 庫可以簡化數據表的創建和管理。下面是使用 Doctrine ORM 創建一個用戶表的示例:
<?php require_once "vendor/autoload.php"; use Doctrine\ORM\Tools\Setup; use Doctrine\ORM\EntityManager; // 配置 ORM $isDevMode = true; $config = Setup::createAnnotationMetadataConfiguration([__DIR__."/src"], $isDevMode); $conn = [ 'driver' =>'pdo_mysql', 'user' =>'root', 'password' =>'', 'dbname' =>'myDB', ]; // 創建 EntityManager $entityManager = EntityManager::create($conn, $config); // 創建用戶類 /** * @Entity * @Table(name="users") */ class User { /** * @Id * @Column(type="integer") * @GeneratedValue */ protected $id; /** * @Column(type="string") */ protected $name; /** * @Column(type="string", nullable=true) */ protected $email; /** * @Column(type="string") */ protected $password; /** * @Column(type="datetime") */ protected $regDate; public function __construct($name, $email, $password) { $this->name = $name; $this->email = $email; $this->password = $password; $this->regDate = new \DateTime("now"); } // Getters and Setters } // 創建表 $tool = new \Doctrine\ORM\Tools\SchemaTool($entityManager); $classes = [$entityManager->getClassMetadata(User::class)]; $tool->createSchema($classes); echo "用戶表創建成功";
上面的示例中:
- 創建了一個名為 User 的類,將其映射到數據庫中的 users 表。
- 類中包含 id、name、email、password、regDate 五個屬性。
- id 屬性使用 @Id 和 @GeneratedValue 注解,表示它是主鍵并且是自動增長的。
- 屬性中使用 @Column 注解,表示它們對應數據庫表中的列。
- 構造函數中使用 new \DateTime("now") 創建了一個當前時間的對象,用于賦值給 regDate 屬性。
- 使用 SchemaTool 類中的 createSchema() 方法創建數據庫表。
總結
無論是使用 SQL 語句還是 ORM 庫,都可以輕松地創建并管理數據庫表。選擇哪種方法,取決于具體需求和自己的編程習慣。