MySQLi面向过程实践---预处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQLi面向过程实践---预处理相关的知识,希望对你有一定的参考价值。

mysqli预处理涉及到以下几个函数:

mysqli_stmt mysqli_prepare ( mysqli $link , string $query )

bool mysqli_stmt_bind_param ( mysqli_stmt $stmt , string $types , mixed &$var1 [, mixed &$... ] )

bool mysqli_stmt_execute ( mysqli_stmt $stmt )

bool mysqli_stmt_close ( mysqli_stmt $stmt )

mixed mysqli_query ( mysqli $link , string $query)

bool mysqli_set_charset ( mysqli $link , string $charset )

 

具体的示例代码如下:

<?php 
	$conn=mysqli_connect("localhost","root","root","test");
	
	//设置字符集	
	mysqli_set_charset($conn,"utf8");

	//预处理,注意返回的类型是mysqli_stmt
	$stmt=mysqli_prepare($conn,"insert into aaa values (?,?)");

	// 绑定参数,第二个参数,请看下文注解
	// 注意,在$id,$name等变量的位置,不能出现常亮
	// mysqli_stmt_bind_param($stmt,"is",5,‘aaaaa‘);写法是错误的
	mysqli_stmt_bind_param($stmt,"is",$id,$name);

	// 参数赋值
	$id="99";$name="xxxxxx";

	//执行预处理
	mysqli_stmt_execute($stmt);

	//关闭预处理,
	//注意关闭的不是数据库连接,而是“预处理”
	mysqli_stmt_close($stmt);

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

这里注意绑定参数的时候,

bool mysqli_stmt_bind_param ( mysqli_stmt $stmt , string $types , mixed &$var1 [, mixed &$... ] )

第二个参数是类型(type),类型有4个类型,分别是:

  i(整型integer)、

  d(双精度浮点数double)、

  s(字符串string)、

  b(二进制大数据块blob)

每一个类型,即每个字母(i/d/s/b)对应一个参数,每个参数的位置所对应的类型要正确,顺序别颠倒

以上是关于MySQLi面向过程实践---预处理的主要内容,如果未能解决你的问题,请参考以下文章

MySQLi面向对象实践---预处理

MySQLi面向对象实践---事务处理

PHPmysqli扩展整理,包括面向过程和面向对象的比较事务控制批量执行预处理

MySQLi面向对象实践--select

MySQLi面向对象实践--multi_query

二十mysqli基于面向过程与面向对象的编程