PHP与MySQL交互

PHP 与MySQL 交互

了解PHP 与MySQL 交互流程

掌握PHP 与MySQL 交互相关函数

函数速查

函数名 作用
mysqli_connect() 与MySQL 数据库建立连接。
mysqli_close() 关闭与MYSQL 数据库建立的连接。
mysqli_connect_errno() 与MySQL 数据库建立连接时,发生错误时的错误编号。
mysqli_connect_error() 与MySQL 数据库建立连接时,发生错误时的错误信息。
mysqli_query() 执行SQL 语句。
mysqli_errno() 执行SQL 语句时,发生错误的编号。
mysqli_error() 执行SQL 语句时,发生错误的信息。
mysqli_fetch_assoc() 从结果集对象中取数据,按条取数据。

交互过程

  • 建立与MySQL 链接。
  • 执行SQL 语句,返回结果集对象。
  • 从结果集对象中取数据。
  • 关闭与MySQL 链接。

与MySQL 建立链接

直接使用PHP 提供的函数。

建立链接

1
2
3
4
5
6
$db_host = "127.0.0.1";
$db_user = "root";
$db_pass = "root";
$db_name = "pikachu";

$link = @mysqli_connect($db_host, $db_user, $db_pass, $db_name);

如果链接成功,返回object(mysqli)1;否则,返回bool(false)。

$link 是对象类型的变量,相当于一个”令牌”。

捕获连接错误

  • 错误编号
  • 错误详情
1
2
3
if(!$link){
exit("[".mysqli_connect_errno()."] ".mysqli_connect_error());
}

关闭链接

1
mysqli_close($link);

执行SQL

单条SQL 语句执行

1
2
3
$sql = "select * from users;";

$results = mysqli_query($link, $sql);

如果SQL 语句正常执行,就会返回对象类型object(mysqli_result)#2 的数据;否则,bool(false)。

对于insert,delete,update 等不会返回数据的SQL 语句,在执行没有错误时将返回true。对于返回数据的SQL 语句执行成功的时候会返回结果集对象,可以使用操作结果集对象的函数来从中获取数据。

SQL 错误

如果在执行SQL 语句的时候发生错误,mysqli_query 将返回false。可以使用以下函数捕获错误原因:

1
2
3
if(!$results){
exit("[".mysqli_errno($link)."] ".mysqli_error($link));
}

结果集对象

操作结果集对象。

函数速查

函数 说明
mysqli_fetch_row() 以索引数组的方式获取一条记录的数据
mysqli_fetch_assoc() 以关联数组的方式获取一条记录的数据
mysqli_fetch_array() 以索引数组或关联数组的方式获取一条记录的数据
mysqli_fetch_all() 以索引数组或关联数组的方式获取全部记录的数据
mysqli_num_rows() 获取结果集对象中数据条数
mysqli_free_result() 释放与一个结果集合相关的内存
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
// 连接数据库
$conn = mysqli_connect("localhost", "root", "root", "pikachu");

// 查询语句
$sql = "SELECT id FROM users";

// 执行查询语句
$result = mysqli_query($conn, $sql);

// 获取一行作为关联数组
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
var_dump($row);
echo "<br \>";
// 或者获取一行作为数字数组
$row = mysqli_fetch_array($result, MYSQLI_NUM);
var_dump($row);
echo "<br \>";
// 或者获取一行作为关联数组和数字数组的组合
$row = mysqli_fetch_array($result, MYSQLI_BOTH);
var_dump($row);
echo "<br \>";
// 输出结果
echo "ID: " . $row["id"];

// 关闭连接
mysqli_close($conn);
?>

mysqli_num_rows

1
var_dump(mysqli_num_rows($results));

mysqli_fetch_assoc

  • 以关联数组的方式从结果集对象中取记录。
  • 执行一次,取得一条记录,在执行一次,取得下一条记录。
1
2
3
while($result = mysqli_fetch_assoc($results)){
var_dump($result);
}

表格形式

1
2
3
4
5
6
7
while($result = mysqli_fetch_assoc($results)){
echo "<tr>";
echo "<td>{$result['id']}</td>
<td>{$result['username']}</td>
<td>{$result['password']}</td>";
echo "</tr>";
}

显示不同用户信息

根据id 参数显示不同用户信息。

通过$_GET 数组捕获用户输入的id 参数。

1
2
3
$id = isset($_GET['id'])? $_GET['id']: 1;

$sql = "select * from users where id={$id};";