注册 登录

清河洛

mysqli与MySQL交互的预处理语句

qingheluo2016-12-16清河洛270
在编写PHP代码执行SQL语句的时候,很多情况下我们都是相似的语句,只是个别的参数不同,针对这种重复执行相似语句的情况,MySQL4.1版本开始提供了一种名为预处理语句的机制,它可以将整个语句只向MySQL服务器发送一次,以后只有参数发生变化,MySQL服务器只需对语句的结构做一次分析就够了。这既减少了需要传输的数据量,还提高语句的处理效率。1)准备一个用于执行的SQL语句准备的SQL语句里面使用占位符"?",来代表将要改变的参数$query=‘insert into 表(字段1,字段2...) values(?,?...)‘;$stmt=mysqli_prepare($link,$qu...

在编写PHP代码执行SQL语句的时候,很多情况下我们都是相似的语句,只是个别的参数不同,针对这种重复执行相似语句的情况,MySQL4.1版本开始提供了一种名为预处理语句的机制,它可以将整个语句只向MySQL服务器发送一次,以后只有参数发生变化,MySQL服务器只需对语句的结构做一次分析就够了。这既减少了需要传输的数据量,还提高语句的处理效率。

1)准备一个用于执行的SQL语句

准备的SQL语句里面使用占位符"?",来代表将要改变的参数

$query=‘insert into 表(字段1,字段2...) values(?,?...)‘;

$stmt=mysqli_prepare($link,$query);

2)将变量作为参数绑定到prepared语句上

mysqli_stmt_bind_param($stmt ,‘values $types‘,$var1,$var2...);

参数string $types说明:表示后面多个可选参数变量的数据类型,一一对应.

i:int类型

d:double或者float类型

s:字符串类型

b:二进制数据类型(BLOB、二进制字符串)

例:mysqli_stmt_bind_param($stmt ,‘is‘,$val1,$val2);

表示$query变量中的两个占位符第一个为“i”类型并赋值给$val1,第一个为“s”类型并赋值给$val2

3)执行一个prepared准本好的语句

在执行语句前要先给$val1和$val2赋值

mysqli_stmt_execute ($stmt);

4)将查询出的数据绑定到PHP变量上

mysqli_stmt_bind_result($stmt,$var1,$vae2...);

5)从一个prepared语句中抓取结果到指定变量中

mysqli_stmt_fetch ($stmt);

6)从一个prepared语句返回结果集元数据,配合相关函数,可以用来获得字段的相关信息

mysqli_stmt_result_metadata($stmt);

①mysqli_fetch_field();

②mysqli_fetch_fields();

7)取回一个结果集

mysqli_stmt_store_result($stmt);

取回之后可以使用mysqli_stmt_num_rows($stmt);返回语句结果集中的行数

8)释放给定语句处理存储的结果集所占内存

mysqli_stmt_free_result($stmt);

9)如果在执行SQL语句的时候发生错误,可以使用以下函数处理错误原因

mysqli_stmt_errno ($link);(返回int类型)

mysqli_stmt_error ($link);(返回string类型)

10)关闭一个prepared语句

mysqli_stmt_close($stmt);



网址导航