PHP MySQL 创建数据库

PHP MySQL 创建数据库 数据库存有一个或多个表。 需要 CREATE 权限来创建或删除 MySQL 数据库。 使用 MySQLi 和 PDO 创建 MySQL 数据库 CREATE DATABASE 语句用于在 MySQL 中创建数据库。



数据库存有一个或多个表。

你需要 CREATE 权限来创建或删除 MySQL 数据库。


使用 MySQLi 和 PDO 创建 MySQL 数据库

CREATE DATABASE 语句用于在 MySQL 中创建数据库。

在下面的实例中,创建了一个名为 "myDB" 的数据库:

实例 (MySQLi - 面向对象)

<?php
$servername = "localhost";
$username = "username";
$password = 
"password";
// 创建连接
$conn = 
new mysqli($servername, $username, $password);
// 检测连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}
// 创建数据库
$sql = "CREATE DATABASE myDB";
if ($conn->query($sql) === TRUE) {
    
echo "数据库创建成功";
} else {
    echo 
"Error creating database: " . $conn->error;
}
$conn->close();
?>
Note 注意: 当你创建一个新的数据库时,你必须为 mysqli 对象指定三个参数 (servername, username 和 password)。

Tip: 如果你使用其他端口(默认为3306),为数据库参数添加空字符串,如: new mysqli("localhost", "username", "password", "", port)

 

实例 (MySQLi Procedural)

<?php
$servername = "localhost";
$username = "username";
$password = 
"password";
// 创建连接
$conn = mysqli_connect($servername, 
$username, $password);
// 检测连接
if (!$conn) {
    die("连接失败: " . mysqli_connect_error());
}
// 创建数据库
$sql = "CREATE 
DATABASE myDB";
if (mysqli_query($conn, $sql)) {
    echo "数据库创建成功";
} else {
    echo "Error 
creating database: " . mysqli_error($conn);
}
mysqli_close($conn);
?>

注意: 以下使用 PDO 实例创建数据库 "myDBPDO":

实例

使用 PDO:

<?php
$servername 
"localhost";
$username "username";
$password "password";

try {
    
$conn = new PDO("mysql:host=$servername;dbname=myDB", $username$password);

    
// 设置 PDO 错误模式为异常
    
$conn->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
    
$sql "CREATE DATABASE myDBPDO";

    
// 使用 exec() ,因为没有结果返回
    
$conn->exec($sql);

    echo 
"数据库创建成功<br>";
}
catch(
PDOException $e)
{
    echo 
$sql "<br>" $e->getMessage();
}

$conn null;
?>

提示: 使用 PDO 的最大好处是在数据库查询过程出现问题时可以使用异常类来 处理问题。如果  try{ } 代码块出现异常,脚本会停止执行并会跳到第一个 catch(){ } 代码块执行代码。 在以上捕获的代码块中我们输出了 SQL 语句并生成错误信息。

 

PHP MySQL 插入数据

PHP MySQL 插入数据 ,使用 MySQLi 和 PDO 向 MySQL 插入数据 在创建完数据库和表后,我们可以向表中添加数据。PHP 中 SQL 查询语句必须使用引号 ,在 SQL 查询语句中的字符串值必须加引号 ,数值的值不需要引号 ,NULL 值不需要引号 INSERT INTO 语句通常用于向 MySQL 表添加新的记录。



使用 MySQLi 和 PDO 向 MySQL 插入数据

在创建完数据库和表后,我们可以向表中添加数据。

以下为一些语法规则:

INSERT INTO 语句通常用于向 MySQL 表添加新的记录:

INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)
学习更多关于 SQL 知识,请查看我们的 SQL 教程

在前面的几个章节中我们已经创建了表 "MyGuests",表字段有: "id", "firstname", "lastname", "email" 和 "reg_date"。 现在,让我们开始向表填充数据。

Note 注意: 如果列设置 AUTO_INCREMENT (如 "id" 列) 或 TIMESTAMP (如 "reg_date" 列),,我们就不需要在 SQL 查询语句中指定值; MySQL 会自动为该列添加值。

例向 "MyGuests" 表添加了新的记录:

实例 (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 = "INSERT INTO 
MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com')";
if ($conn->query($sql) === TRUE) {
    echo "新记录插入成功";
} else {
    echo 
"Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>

实例 (MySQLi - 面向过程)

<?php
$servername = "localhost";
$username = "username";
$password = 
"password";
$dbname = 
"myDB";
// 创建连接
$conn = mysqli_connect($servername, $username, $password, 
$dbname);
// 检测连接
if (!$conn) {
    die("Connection 
failed: " . mysqli_connect_error());
}
$sql = "INSERT INTO 
MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com')";
if (mysqli_query($conn, $sql)) {
    echo "新记录插入成功";
} else {
    echo "Error: " 
. $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
?>

实例 (PDO)

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = 
"myDBPDO";
try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", 
$username, $password);
    
// 设置 PDO 错误模式,用于抛出异常
    $conn->setAttribute(PDO::ATTR_ERRMODE, 
PDO::ERRMODE_EXCEPTION);
    $sql = "INSERT INTO 
MyGuests (firstname, lastname, email)
   
VALUES ('John', 'Doe', 'john@example.com')";
    // 使用 exec() ,没有结果返回 
    $conn->exec($sql);
    
echo "新记录插入成功";
}
catch(PDOException $e)
 {
    
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>

 

PHP MySQL 创建数据表

PHP 创建 MySQL 表,一个数据表有一个唯一名称,并有行和列组成。 使用 MySQLi 和 PDO 创建 MySQL 表 CREATE TABLE 语句用于创建 MySQL 表。



一个数据表有一个唯一名称,并有行和列组成。


使用 MySQLi 和 PDO 创建 MySQL 表

CREATE TABLE 语句用于创建 MySQL 表。

相关视频教程推荐:《mysql教程http://www.php.cn/course/list/51.html

我们将创建一个名为 "MyGuests" 的表,有 5 个列: "id", "firstname", "lastname", "email" 和 "reg_date":

CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP
)

上表中的注意事项:

数据类型指定列可以存储什么类型的数据。完整的数据类型请参考我们的 数据类型参考手册。

在设置了数据类型后,你可以为没个列指定其他选项的属性:

每个表都应该有一个主键(本列为 "id" 列),主键必须包含唯一的值。

以下实例展示了如何在 PHP 中创建表:

实例 (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 创建数据表
$sql 
= "CREATE TABLE MyGuests (
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 "Table 
MyGuests created successfully";
} else {
    echo 
"创建数据表错误: " . $conn->error;
}
$conn->close();
?>

实例 (MySQLi - 面向过程)

<?php
$servername = "localhost";
$username = "username";
$password = 
"password";
$dbname = 
"myDB";
// 创建连接
$conn = mysqli_connect($servername, $username, $password, 
$dbname);
// 检测连接
if (!$conn) {
    die("连接失败: " . mysqli_connect_error());
}
// 使用 sql 创建数据表
$sql 
= "CREATE TABLE MyGuests (
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 (mysqli_query($conn, $sql)) {
    echo "数据表 MyGuests 
创建成功";
} else {
    echo "创建数据表错误: " . mysqli_error($conn);
}
mysqli_close($conn);
?>

实例 (PDO)

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = 
"myDBPDO";
try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", 
$username, $password);
    
// 设置 PDO 错误模式,用于抛出异常
    $conn->setAttribute(PDO::ATTR_ERRMODE, 
PDO::ERRMODE_EXCEPTION);
    // 使用 sql 创建数据表
   
$sql 
= "CREATE TABLE MyGuests (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY 
KEY, 
    firstname VARCHAR(30) NOT NULL,
    lastname VARCHAR(30) NOT NULL,
    email 
VARCHAR(50),
    reg_date TIMESTAMP
    )";
    // 使用 exec() ,没有结果返回 
    $conn->exec($sql);
    
echo "数据表 MyGuests 创建成功";
}
catch(PDOException $e)
 {
    
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>

PHP MySQL 预处理语句

PHP MySQL 预处理语句对于防止 MySQL 注入是非常有用的。预处理语句及绑定参数 预处理语句用于执行多个相同的 SQL 语句,并且执行效率更高。 预处理:创建 SQL 语句模板并发送到数据库。预留的值使用参数 '?' 标记 。



预处理语句对于防止 MySQL 注入是非常有用的。


预处理语句及绑定参数

预处理语句用于执行多个相同的 SQL 语句,并且执行效率更高。

相关视频教程推荐:《mysql教程http://www.php.cn/course/list/51.html

预处理语句的工作原理如下:

  1. 预处理:创建 SQL 语句模板并发送到数据库。预留的值使用参数 "?" 标记 。例如:

INSERT 
INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?)
  1. 数据库解析,编译,对SQL语句模板执行查询优化,并存储结果不输出。

  2. 执行:最后,将应用绑定的值传递给参数("?" 标记),数据库执行语句。应用可以多次执行语句,如果参数的值不一样。

相比于直接执行SQL语句,预处理语句有两个主要优点:


MySQLi 预处理语句

以下实例在 MySQLi 中使用了预处理语句,并绑定了相应的参数:

实例 (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);
}
// 预处理及绑定
$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) 
VALUES(?, ?, ?)");
$stmt->bind_param("sss", $firstname, $lastname, 
$email);
// 设置参数并执行
$firstname = "John";
$lastname 
= "Doe";
$email = "john@example.com";
$stmt->execute();
$firstname 
= "Mary";
$lastname = "Moe";
$email = "mary@example.com";
$stmt->execute();
$firstname = "Julie";
$lastname = "Dooley";
$email = "julie@example.com";
$stmt->execute();
echo "新记录插入成功";
$stmt->close();
$conn->close();
?>
解析以下实例的每行代码:
"INSERT INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?)"
在 SQL 语句中,我们使用了问号 (?),在此我们可以将问号替换为整型,字符串,双精度浮点型和布尔值。

接下来,让我们来看下 bind_param() 函数:

$stmt->bind_param("sss", $firstname, $lastname, $email);
该函数绑定了 SQL 的参数,且告诉数据库参数的值。 "sss" 参数列处理其余参数的数据类型。s 字符告诉数据库该参数为字符串。

参数有以下四种类型:

每个参数都需要指定类型。

通过告诉数据库参数的数据类型,可以降低 SQL 注入的风险。

Note 注意: 如果你想插入其他数据(用户输入),对数据的验证是非常重要的。

 

PDO 中的预处理语句

以下实例我们在 PDO 中使用了预处理语句并绑定参数:

实例 (PDO 使用预处理语句)

<?php
$servername = "localhost";
$username = "username";
$password = 
"password";
$dbname = 
"myDBPDO";
try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", 
$username, $password);
    
// 设置 PDO 错误模式为异常
    $conn->setAttribute(PDO::ATTR_ERRMODE, 
PDO::ERRMODE_EXCEPTION);
    // 预处理 SQL 并绑定参数
    
$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email)
    VALUES (:firstname, :lastname, :email)");
    
$stmt->bindParam(':firstname', $firstname);
    $stmt->bindParam(':lastname', 
$lastname);
    $stmt->bindParam(':email', $email);
    // 插入行
    $firstname = 
"John";
    $lastname = "Doe";
    
$email = "john@example.com";
    $stmt->execute();
    
// 插入其他行
    $firstname = "Mary";
    
$lastname = "Moe";
    $email = "mary@example.com";
    
$stmt->execute();
    // 插入其他行
    
$firstname = "Julie";
    $lastname = "Dooley";
    
$email = "julie@example.com";
    $stmt->execute();
    
echo "新记录插入成功";
}
catch(PDOException $e)
 {
    
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>

粤ICP备19016450号