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 →
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com