前言

学会了普通的sql语句后,我们需要往语句里添加一些参数,如果直接使用字符串拼接的方式很容易造成sql的注入,影响数据安全,所以我们现在需要对sql语句进行预处理,把需要填充的地方设置成变量,这样无论如何也不会被sql注入了。

连接

1
2
3
4
5
6
7
8
9
10
11
12
$mysql_server_name = '127.0.0.1';
$mysql_username = 'root';
$mysql_password = '123456';
$mysql_database = 'sjk'
$conn=mysqli_connect($mysql_server_name,$mysql_username,$mysql_password,$mysql_database);
//连接数据库错误提示
if (mysqli_connect_errno($conn)) {
echo "<script>alert('无法连接到数据库')</script>";
exit();
}
mysqli_query($conn,"set names utf8"); //数据库编码格式
mysqli_set_charset($conn,"utf8");//设置默认客户端字符集。

构建

在构建sql语句的时候,我们使用?来填充变量的地方。

1
2
$sql = "SELECT * FROM `data` where `code`=? limit 1";
$stmt = mysqli_prepare($link, $sql);

绑定参数

我们把需要填充的参数绑定到sql语句上,注意第一行的s,这里的s代表1个字符串,如果我们要同时绑定多个参数,就要写成sss,有几个参数写几个s。

1
2
mysqli_stmt_bind_param($stmt, 's', $value);
mysqli_stmt_execute($stmt);

获取结果

如果是查询语句的话,我们需要获取查询到的结果,取具体某一项结果的时候直接使用['name']即可。

1
2
$result = mysqli_stmt_get_result($stmt);
$row = mysqli_fetch_array($result);