PHP MySQL数据库连接与操作:一步步教你建立数据库连接,开启数据库之旅
发布时间: 2024-07-24 04:55:02 阅读量: 18 订阅数: 20
![PHP MySQL数据库连接与操作:一步步教你建立数据库连接,开启数据库之旅](https://img-blog.csdn.net/20180928141511915?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzE0NzU5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
# 1. PHP与MySQL简介**
PHP是一种广泛使用的服务器端脚本语言,而MySQL是一种流行的关系型数据库管理系统(RDBMS)。PHP和MySQL的结合为Web开发提供了强大的基础,使开发人员能够轻松地存储、检索和操作数据。
PHP提供了连接MySQL数据库并执行各种操作的内置函数和类。通过使用这些函数和类,开发人员可以创建动态Web应用程序,这些应用程序可以与数据库交互以存储和检索数据。
MySQL提供了强大的功能,例如数据完整性、事务支持和用户管理。它还支持各种数据类型,包括数字、字符串、日期和时间。通过利用MySQL的这些功能,开发人员可以创建健壮且可扩展的数据库应用程序。
# 2. 建立PHP与MySQL数据库连接
### 2.1 连接参数和连接函数
PHP提供了多种连接MySQL数据库的方式,其中最常用的两种是mysqli和PDO。
#### 2.1.1 mysqli_connect()函数
mysqli_connect()函数用于建立与MySQL数据库的连接。其语法如下:
```php
mysqli_connect(host, username, password, database_name, port, socket);
```
| 参数 | 描述 |
|---|---|
| host | MySQL服务器主机名或IP地址 |
| username | MySQL用户名 |
| password | MySQL用户密码 |
| database_name | 要连接的数据库名称(可选) |
| port | MySQL服务器端口(可选) |
| socket | MySQL服务器套接字(可选) |
**示例:**
```php
$mysqli = mysqli_connect("localhost", "root", "password", "my_database");
```
#### 2.1.2 PDO连接方式
PDO(PHP Data Objects)是PHP中用于数据库操作的扩展。PDO提供了面向对象的方式连接数据库,其语法如下:
```php
$dsn = "mysql:host=localhost;dbname=my_database";
$username = "root";
$password = "password";
$pdo = new PDO($dsn, $username, $password);
```
| 参数 | 描述 |
|---|---|
| dsn | 数据源名称,包含数据库类型、主机名、数据库名称等信息 |
| username | MySQL用户名 |
| password | MySQL用户密码 |
**示例:**
```php
$dsn = "mysql:host=localhost;dbname=my_database";
$pdo = new PDO($dsn, "root", "password");
```
### 2.2 连接状态检查和错误处理
连接到数据库后,需要检查连接状态并处理可能的错误。
#### 2.2.1 mysqli_connect_error()函数
mysqli_connect_error()函数用于获取mysqli连接的错误信息。其语法如下:
```php
mysqli_connect_error();
```
**示例:**
```php
if (mysqli_connect_error()) {
echo "连接失败:" . mysqli_connect_error();
}
```
#### 2.2.2 PDOException异常
PDO连接错误会抛出PDOException异常。可以捕获该异常来处理错误。
**示例:**
```php
try {
$dsn = "mysql:host=localhost;dbname=my_database";
$pdo = new PDO($dsn, "root", "password");
} catch (PDOException $e) {
echo "连接失败:" . $e->getMessage();
}
```
# 3. MySQL数据库基本操作
### 3.1 数据库创建与删除
MySQL数据库操作的第一步是创建数据库。可以使用`mysqli_query()`函数或`PDO::query()`方法来创建数据库。
#### 3.1.1 mysqli_query()函数
```php
<?php
$servername = "localhost";
$username = "root";
$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 "数据库创建失败: " . mysqli_error($conn);
}
// 关闭连接
mysqli_close($conn);
?>
```
**代码逻辑分析:**
1. 使用`mysqli_connect()`函数连接到MySQL服务器。
2. 使用`mysqli_query()`函数执行`CREATE DATABASE`语句创建数据库。
3. 使用`mysqli_error()`函数获取错误信息。
4. 使用`mysqli_close()`函数关闭连接。
#### 3.1.2 PDO::query()方法
```php
<?php
$servername = "localhost";
$username = "root";
$password = "password";
try {
// 创建 PDO 连接
$conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
// 设置 PDO 错误模式为异常
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// 创建数据库
$sql = "CREATE DATABASE myDB";
$conn->query($sql);
echo "数据库创建成功";
} catch (PDOException $e) {
echo "数据库创建失败: " . $e->getMessage();
}
// 关闭连接
$conn = null;
?>
```
**代码逻辑分析:**
1. 使用`PDO`类创建一个连接。
2. 设置错误模式为异常。
3. 使用`query()`方法执行`CREATE DATABASE`语句创建数据库。
4. 使用`getMessage()`方法获取错误信息。
5. 使用`null`关闭连接。
### 3.2 表格创建与删除
创建数据库后,需要创建表格来存储数据。可以使用`mysqli_query()`函数或`PDO::query()`方法来创建表格。
#### 3.2.1 mysqli_query()函数
```php
<?php
$servername = "localhost";
$username = "root";
$password = "password";
$dbname = "myDB";
// 创建连接
$conn = mysqli_connect($servername, $username, $password, $dbname);
// 检查连接
if (!$conn) {
die("连接失败: " . mysqli_connect_error());
}
// 创建表格
$sql = "CREATE TABLE users (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
)";
if (mysqli_query($conn, $sql)) {
echo "表格创建成功";
} else {
echo "表格创建失败: " . mysqli_error($conn);
}
// 关闭连接
mysqli_close($conn);
?>
```
**代码逻辑分析:**
1. 使用`mysqli_connect()`函数连接到MySQL服务器。
2. 使用`mysqli_query()`函数执行`CREATE TABLE`语句创建表格。
3. 使用`mysqli_error()`函数获取错误信息。
4. 使用`mysqli_close()`函数关闭连接。
#### 3.2.2 PDO::query()方法
```php
<?php
$servername = "localhost";
$username = "root";
$password = "password";
$dbname = "myDB";
try {
// 创建 PDO 连接
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// 设置 PDO 错误模式为异常
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// 创建表格
$sql = "CREATE TABLE users (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
)";
$conn->query($sql);
echo "表格创建成功";
} catch (PDOException $e) {
echo "表格创建失败: " . $e->getMessage();
}
// 关闭连接
$conn = null;
?>
```
**代码逻辑分析:**
1. 使用`PDO`类创建一个连接。
2. 设置错误模式为异常。
3. 使用`query()`方法执行`CREATE TABLE`语句创建表格。
4. 使用`getMessage()`方法获取错误信息。
5. 使用`null`关闭连接。
# 4. PHP MySQL数据查询与处理
### 4.1 数据查询
数据查询是数据库操作中最基本的操作之一,在PHP中,我们可以使用`mysqli_query()`函数或PDO的`query()`方法来执行数据查询操作。
#### 4.1.1 mysqli_query()函数
`mysqli_query()`函数的语法如下:
```php
mysqli_query(mysqli $link, string $query) : mysqli_result|false
```
其中:
* `$link`:连接标识符,表示与MySQL数据库的连接。
* `$query`:要执行的SQL查询语句。
`mysqli_query()`函数执行成功时,会返回一个`mysqli_result`对象,该对象包含了查询结果。如果执行失败,则返回`false`。
**示例:**
```php
$link = mysqli_connect("localhost", "root", "password", "database");
$result = mysqli_query($link, "SELECT * FROM users");
if ($result) {
// 查询成功,处理查询结果
} else {
// 查询失败,处理错误
}
```
#### 4.1.2 PDO::query()方法
PDO的`query()`方法的语法如下:
```php
PDOStatement PDO::query(string $statement) : PDOStatement|false
```
其中:
* `$statement`:要执行的SQL查询语句。
`PDO::query()`方法执行成功时,会返回一个`PDOStatement`对象,该对象包含了查询结果。如果执行失败,则返回`false`。
**示例:**
```php
$dsn = "mysql:host=localhost;dbname=database";
$user = "root";
$password = "password";
$pdo = new PDO($dsn, $user, $password);
$statement = $pdo->query("SELECT * FROM users");
if ($statement) {
// 查询成功,处理查询结果
} else {
// 查询失败,处理错误
}
```
### 4.2 数据处理
数据处理是数据查询后的重要步骤,在PHP中,我们可以使用`mysqli_fetch_assoc()`函数或PDOStatement的`fetch()`方法来获取查询结果中的数据。
#### 4.2.1 mysqli_fetch_assoc()函数
`mysqli_fetch_assoc()`函数的语法如下:
```php
array|false mysqli_fetch_assoc(mysqli_result $result) : array|false
```
其中:
* `$result`:查询结果对象,由`mysqli_query()`函数返回。
`mysqli_fetch_assoc()`函数会从查询结果中获取一行数据,并以关联数组的形式返回。如果查询结果中没有更多数据,则返回`false`。
**示例:**
```php
$link = mysqli_connect("localhost", "root", "password", "database");
$result = mysqli_query($link, "SELECT * FROM users");
while ($row = mysqli_fetch_assoc($result)) {
// 处理查询结果中的每一行数据
}
```
#### 4.2.2 PDOStatement::fetch()方法
PDOStatement的`fetch()`方法的语法如下:
```php
mixed PDOStatement::fetch(int $fetch_style = PDO::FETCH_ASSOC, ...$args) : mixed
```
其中:
* `$fetch_style`:指定如何获取查询结果数据,可以是以下常量之一:
* `PDO::FETCH_ASSOC`:以关联数组的形式获取数据。
* `PDO::FETCH_NUM`:以索引数组的形式获取数据。
* `PDO::FETCH_BOTH`:以关联数组和索引数组的形式获取数据。
* `PDO::FETCH_OBJ`:以对象的形式获取数据。
* `...$args`:可选参数,用于指定额外的处理选项。
`PDOStatement::fetch()`方法会从查询结果中获取一行数据,并根据指定的`$fetch_style`参数返回数据。如果查询结果中没有更多数据,则返回`false`。
**示例:**
```php
$dsn = "mysql:host=localhost;dbname=database";
$user = "root";
$password = "password";
$pdo = new PDO($dsn, $user, $password);
$statement = $pdo->query("SELECT * FROM users");
while ($row = $statement->fetch(PDO::FETCH_ASSOC)) {
// 处理查询结果中的每一行数据
}
```
# 5.1 数据插入
### 5.1.1 mysqli_query()函数
使用`mysqli_query()`函数插入数据时,需要传入两个参数:
- 连接资源:通过`mysqli_connect()`函数建立的数据库连接。
- SQL语句:用于插入数据的SQL语句。
```php
<?php
$conn = mysqli_connect("localhost", "root", "password", "database");
// 插入数据
$sql = "INSERT INTO users (name, email) VALUES ('John Doe', 'john.doe@example.com')";
if (mysqli_query($conn, $sql)) {
echo "Data inserted successfully";
} else {
echo "Error inserting data: " . mysqli_error($conn);
}
mysqli_close($conn);
?>
```
### 5.1.2 PDO::query()方法
使用PDO对象插入数据时,需要调用`query()`方法,并传入SQL语句。
```php
<?php
$dsn = "mysql:host=localhost;dbname=database";
$username = "root";
$password = "password";
try {
$conn = new PDO($dsn, $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// 插入数据
$sql = "INSERT INTO users (name, email) VALUES ('John Doe', 'john.doe@example.com')";
$conn->query($sql);
echo "Data inserted successfully";
} catch (PDOException $e) {
echo "Error inserting data: " . $e->getMessage();
}
$conn = null;
?>
```
0
0