mysqli_prepare() 函数准备执行一个 SQL 语句
mysqli_prepare()函数做好执行 SQL 语句的准备,返回一个语句句柄,可以对这个句柄进行后续的操作,您可以在此查询中使用参数标记(“?”),为其指定值,然后稍后执行。
这里仅仅支持单一的 SQL 语句,不支持多 SQL 语句。
在执行语句之前,需要使用 mysqli_stmt_bind_param() 函数 对占位符参数进行绑定。 同样,在获取结果之前,必须使用 mysqli_stmt_bind_result() 函数对返回的列值进行绑定。
mysqli_prepare($con, $str);
序号 | 参数及说明 |
---|---|
1 | con(必需) 这是一个表示与MySQL Server的连接的对象。 |
2 | str(必需) 这是指定所需查询的字符串值。 |
如果成功,此函数返回一个 statement 对象,如果失败,则返回false。
此函数最初是在PHP版本5中引入的,并且可以在所有更高版本中使用。
以下示例演示了mysqli_prepare()函数的用法(面向过程风格)-
<?php $con = mysqli_connect("localhost", "root", "password", "mydb"); $query = "CREATE TABLE Test(Name VARCHAR(255), AGE INT)"; mysqli_query($con, $query); print("创建表.....\n"); $stmt = mysqli_prepare($con, "INSERT INTO Test values(?, ?)"); mysqli_stmt_bind_param($stmt, "si", $Name, $Age); $Name = 'Raju'; $Age = 25; print("插入记录....."); //执行语句 mysqli_stmt_execute($stmt); //结束语句 mysqli_stmt_close($stmt); //关闭连接 mysqli_close($con); ?>
输出结果
创建表..... 插入记录.....
如果您验证表的内容,如下所示,$减号;
mysql> select * from test; +------+------+ | Name | AGE | +------+------+ | Raju | 25 | +------+------+ 1 row in set (0.00 sec)
在面向对象的样式中,此函数的语法为$ con-> prepare();。以下是面向对象样式$ minus的This函数的示例;
<?php //建立连接 $con = new mysqli("localhost", "root", "password", "mydb"); $query = "CREATE TABLE Test(Name VARCHAR(255), AGE INT)"; $con -> query($query); print("创建表.....\n"); $stmt = $con -> prepare( "INSERT INTO Test values(?, ?)"); $stmt -> bind_param("si", $Name, $Age); $Name = 'Raju'; $Age = 25; print("插入记录....."); //执行语句 $stmt->execute(); //结束语句 $stmt->close(); //关闭连接 $con->close(); ?>
输出结果
创建表..... 插入记录.....