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();
?>
输出结果
创建表..... 插入记录.....