web渗透PHP与MySQL交互
xiuPHP 与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()); }
|
关闭链接
执行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};";
|