本文最后更新于 2024-02-15 10:24:32
PHP操作
1. mysqli_connect()
连接数据库
2. mysqli_close()
关闭数据库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <?php $servername = "localhost"; $username = "root"; $password = "password"; $dbname = "mydatabase";
$conn = mysqli_connect($servername, $username, $password, $dbname);
if (!$conn) { die("连接失败: " . mysqli_connect_error()); }
echo "连接成功!";
mysqli_close($conn); ?>
|
mysqli_num_rows()
是 PHP 中用于获取查询结果中行数的函数,它是 MySQLi(MySQL Improved Extension)扩展库的一部分。MySQLi 是 PHP 提供的一个强大且面向对象的扩展,用于与 MySQL 数据库进行交互。
mysqli_num_rows
函数的语法如下:
1
| mysqli_num_rows($result);
|
其中:
$result
是一个结果对象,它表示从数据库中返回的查询结果集。
3. mysqli_num_rows
查询结果集中的行数
函数返回查询结果集中的行数,即结果集中包含多少条记录。如果查询失败或返回的结果集为空,则该函数返回 0。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| $connection = mysqli_connect('localhost', 'username', 'password', 'database');
if (mysqli_connect_errno()) { die('连接数据库失败: ' . mysqli_connect_error()); }
$query = "SELECT * FROM users"; $result = mysqli_query($connection, $query);
$num_rows = mysqli_num_rows($result);
echo "查询结果中共有 {$num_rows} 条记录\n";
mysqli_close($connection);
|
4. mysqli_select_db
选择数据库的函数
是 PHP 中用于选择数据库的函数。它用于在连接到 MySQL 数据库后,选择要操作的特定数据库。
1
| bool mysqli_select_db ( mysqli $link , string $dbname )
|
参数说明:
$link
:必需,一个有效的 MySQL 连接对象。
$dbname
:必需,要选择的数据库名称。
返回值:
- 如果选择数据库成功,则返回 true。
- 如果选择数据库失败,则返回 false。
5. mysqli_query 常规的插入查找等
是 PHP 中用于执行 SQL 查询的函数,它是 MySQLi(MySQL Improved Extension)扩展库的一部分。MySQLi 是 PHP 提供的一个强大且面向对象的扩展,用于与 MySQL 数据库进行交互。
mysqli_query
函数的语法如下:
1
| mysqli_query($connection, $query);
|
其中:
$connection
是一个数据库连接对象,它表示与 MySQL 数据库建立的连接。通常通过 mysqli_connect
或 mysqli_init
函数创建连接对象。
$query
是要执行的 SQL 查询语句。
mysqli_query
函数执行指定的 SQL 查询,并返回一个结果对象或布尔值,具体取决于查询的类型和执行结果。
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
| $connection = mysqli_connect('localhost', 'username', 'password', 'database');
if (mysqli_connect_errno()) { die('连接数据库失败: ' . mysqli_connect_error()); }
$query = "SELECT * FROM users"; $result = mysqli_query($connection, $query);
if ($result) { while ($row = mysqli_fetch_assoc($result)) { echo $row['username'] . "\n"; } } else { echo '查询失败: ' . mysqli_error($connection); }
mysqli_close($connection);
|
1 2 3
| echo '<script>window.location.href = "../index.php";</script>';
header('Location: ../index.php');
|
产生原因:由于想在进行数据库的读写之后,从 php
页面转到前端页面,使用 header()
不会执行他前面的 echo
语句,故此
7.防止 sql 注入
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 29 30 31 32 33 34
| <?php include_once "../variable.php";
$conn = mysqli_connect($mysql_hostname, $mysql_username, $mysql_password, $mysql_database); if(!$conn){ echo "数据库".$mysql_database."连接失败"; exit(); } else echo "连接数据库".$mysql_database."成功";
if(isset($_POST['text']) && isset($_POST['input'])){ echo "<script>alert('提交');</script>"; $cont1 = mysqli_real_escape_string($conn, $_POST['text']); $cont2 = mysqli_real_escape_string($conn, $_POST['input']); $sql = "INSERT INTO essy (column1, column2) VALUES (?, ?)"; $stmt = mysqli_prepare($conn, $sql); mysqli_stmt_bind_param($stmt, "ss", $cont1, $cont2); $result = mysqli_stmt_execute($stmt); if(!$result){ echo "插入数据时发生错误:" . mysqli_error($conn); } else{ echo "插入数据成功"; } } else{ echo "<script>alert('提交错误');</script>"; }
mysqli_close($conn); ?>
|
mysqli_real_escape_string()
:
1 2
| 函数的作用就是将字符串中的特殊字符进行转义,使其成为合法的 SQL 字符串。转义后的字符串可以安全地插入到 SQL 查询语句中,而不会引发 SQL 注入问题。 该函数接受两个参数:第一个是数据库连接对象,第二个是要转义的字符串。函数会返回转义后的字符串。
|
mysqli_prepare()
:
1 2 3 4
| 该函数用于准备 SQL 查询语句,返回一个 mysqli_stmt 对象。 mysqli_prepare() 接受两个参数: 第一个参数是数据库连接对象, 第二个参数是要执行的 SQL 查询语句(参数使用占位符 "?" 表示)
|
这种格式可以提高执行查询的效率,并提高应用程序的安全性。
为后面的 mysqli_stmt_bind_param
( ) mysqli_stmt_execute()
做准备
mysqli_stmt_bind_param
( ) :
1 2 3 4 5 6 7 8 9 10 11 12
| 用于绑定参数到准备好的查询语句中。 它接受三个参数: 第一个参数是 mysqli_stmt 对象, 第二个参数是参数类型的字符串, 第三个参数是要绑定的参数 第二个参数类型: 字符串类型:s 整数类型:i 双精度浮点类型:d 布尔类型:b 第二个参数是根据第三个要绑定的来确定的,对应的是相应数据库中的类型,因此易知,第三个三数可以是多个值,即对应表中的不同列
|
只是绑定,并没有进行插入等操作,绑定之后通过 mysqli_stmt_execute()
来执行 sql 语句中的操作
具体根据 mysqli_prepare()
中的 sql 进行的
mysqli_stmt_execute()
1 2 3 4
| 用于执行准备好的查询语句。 它接受一个参数,即 mysqli_stmt 对象 返回布尔值
|
以上四者搭配使用,一定程度上减小了一点点 sql 注入