mysqli::prepare
mysqli::prepare
mysqli_prepare
(PHP 5, PHP 7)
mysqli :: prepare - mysqli_prepare - 准备执行的SQL语句
描述
面向对象的风格
mysqli_stmt mysqli::prepare ( string $query )
程序风格
mysqli_stmt mysqli_prepare ( mysqli $link , string $query )
准备SQL查询,并返回一个语句句柄,用于语句的进一步操作。查询必须由单个SQL语句组成。
在执行语句或读取行之前,必须使用mysqli_stmt_bind_param()和/或mysqli_stmt_bind_result()将参数标记绑定到应用程序变量。
参数
`link`
仅过程样式:由mysqli_connect()或mysqli_init()返回的链接标识符
query
作为一个字符串 查询
注意
:您不应该在语句中添加终止分号或\ g
。
通过在适当的位置嵌入问号(?
)字符,此参数可以在SQL语句中包含一个或多个参数标记。
注意
:标记只在SQL语句中的某些地方合法。例如,它们可以在INSERT
语句的VALUES()
列表中(用于指定行的列值)或与WHERE
子句中的列进行比较以指定比较值。但是,在选择列表中,不允许使用标识符(例如表或列名称),该列表将名称指定为SELECT
语句返回的列,或者指定二元运算符的两个操作数,例如=
等号。后一种限制是必要的,因为不可能确定参数类型。它不能比较标记NULL
的?一片空白
太。通常,参数只在数据操纵语言(DML)语句中合法,而不在数据定义语言(DDL)语句中合法。
返回值
mysqli_prepare()
返回一个语句对象或发生错误时返回FALSE
例子
示例#1 mysqli :: prepare()示例
面向对象的风格
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world"
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error()
exit(
}
$city = "Amersfoort";
/* create a prepared statement */
if ($stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?")) {
/* bind parameters for markers */
$stmt->bind_param("s", $city
/* execute query */
$stmt->execute(
/* bind result variables */
$stmt->bind_result($district
/* fetch value */
$stmt->fetch(
printf("%s is in district %s\n", $city, $district
/* close statement */
$stmt->close(
}
/* close connection */
$mysqli->close(
?>
程序风格
<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world"
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error()
exit(
}
$city = "Amersfoort";
/* create a prepared statement */
if ($stmt = mysqli_prepare($link, "SELECT District FROM City WHERE Name=?")) {
/* bind parameters for markers */
mysqli_stmt_bind_param($stmt, "s", $city
/* execute query */
mysqli_stmt_execute($stmt
/* bind result variables */
mysqli_stmt_bind_result($stmt, $district
/* fetch value */
mysqli_stmt_fetch($stmt
printf("%s is in district %s\n", $city, $district
/* close statement */
mysqli_stmt_close($stmt
}
/* close connection */
mysqli_close($link
?>
上面的例子会输出:
Amersfoort is in district Utrecht
扩展内容
- mysqli_stmt_execute() - 执行准备好的查询
- mysqli_stmt_fetch() - 从准备好的语句中获取结果到绑定变量中
- mysqli_stmt_bind_param() - 将变量作为参数绑定到准备好的语句
- mysqli_stmt_bind_result() - 将变量绑定到准备好的语句以存储结果
- mysqli_stmt_close() - 关闭预准备语句
← mysqli::poll
mysqli::query →