Skip to main content

SQLite PHP:创建表

我们将在上一个教程中创建的phpsqlite数据库中创建两个新表。下面演示了创建项目和任务表的SQL脚本。

CREATE TABLE IF NOT EXISTS projects (
project_id INTEGER PRIMARY KEY,
project_name TEXT NOT NULL
);

CREATE TABLE IF NOT EXISTS tasks (
task_id INTEGER PRIMARY KEY,
task_name TEXT NOT NULL,
completed INTEGER NOT NULL,
start_date TEXT,
completed_date TEXT,
project_id INTEGER NOT NULL,
FOREIGN KEY (
project_id
)
REFERENCES projects (project_id) ON UPDATE CASCADE
ON DELETE CASCADE
);

要使用PDO在SQLite数据库中创建新表,请使用以下步骤:

我们将重用在上一个教程中开发的SQLiteConnection类。下面的SQLiteCreateTable类演示了如何在phpsqlite数据库中创建新表。

<?php

namespace App;

/**
* SQLite Create Table Demo
*/
class SQLiteCreateTable {

/**
* PDO object
* @var \PDO
*/
private $pdo;

/**
* connect to the SQLite database
*/
public function __construct($pdo) {
$this->pdo = $pdo;
}

/**
* create tables
*/
public function createTables() {
$commands = ['CREATE TABLE IF NOT EXISTS projects (
project_id INTEGER PRIMARY KEY,
project_name TEXT NOT NULL
)',
'CREATE TABLE IF NOT EXISTS tasks (
task_id INTEGER PRIMARY KEY,
task_name VARCHAR (255) NOT NULL,
completed INTEGER NOT NULL,
start_date TEXT,
completed_date TEXT,
project_id VARCHAR (255),
FOREIGN KEY (project_id)
REFERENCES projects(project_id) ON UPDATE CASCADE
ON DELETE CASCADE)'];
// execute the sql commands to create new tables
foreach ($commands as $command) {
$this->pdo->exec($command);
}
}

/**
* get the table list in the database
*/
public function getTableList() {

$stmt = $this->pdo->query("SELECT name
FROM sqlite_master
WHERE type = 'table'
ORDER BY name");
$tables = [];
while ($row = $stmt->fetch(\PDO::FETCH_ASSOC)) {
$tables[] = $row['name'];
}

return $tables;
}

}

工作原理。

createTables()方法用于在phpsqlite数据库中创建表。首先,我们有一个存储CREATE TABLE语句的数组。然后我们循环遍历数组,并使用PDO对象的exec()方法逐个执行每个CREATE TABLE语句。

getTableList()方法通过查询SQLite_主表中的表名来选择SQLite数据库中的所有表。WHERE子句中的谓词确保查询只返回表,而不返回视图。在接下来的教程中,您将学习如何使用PDO在中查询数据。

现在是时候使用我们开发的类了。

在索引中。php文件中,使用以下代码:

<?php
require 'vendor/autoload.php';

use App\SQLiteConnection as SQLiteConnection;
use App\SQLiteCreateTable as SQLiteCreateTable;

$sqlite = new SQLiteCreateTable((new SQLiteConnection())->connect());
// create new tables
$sqlite->createTables();
// get the table list
$tables = $sqlite->getTableList();
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<meta name="author" content="sqlitetutorial.net">
<title>PHP SQLite CREATE TABLE Demo</title>
<link href="http://v4-alpha.getbootstrap.com/dist/css/bootstrap.min.css" rel="stylesheet">

</head>
<body>
<div class="container">
<div class="page-header">
<h1>PHP SQLite CREATE TABLE Demo</h1>
</div>

<table class="table table-bordered">
<thead>
<tr>
<th>Tables</th>
</tr>
</thead>
<tbody>
<?php foreach ($tables as $table) : ?>
<tr>

<td><?php echo $table ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
</body>
</html>

首先,我们创建SQLiteCreateTable类的一个新实例,并传递使用SQLiteConnection类创建的PDO对象。

其次,我们调用createTables来创建新表,调用getTableList方法来查询新创建的表。

第三,在HTML代码中,我们显示表列表。

下面说明了索引的结果。php脚本:

PHP SQLite Create Table Demo

在本教程中,我们向您展示了如何通过使用PHP PDO执行create TABLE语句来创建新表。