首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysqli::prepare

(PHP 5, PHP 7)

mysqli :: prepare - mysqli_prepare - 准备执行的SQL语句

描述

面向对象的风格

代码语言:javascript
复制
mysqli_stmt mysqli::prepare ( string $query )

程序风格

代码语言:javascript
复制
mysqli_stmt mysqli_prepare ( mysqli $link , string $query )

准备SQL查询,并返回一个语句句柄,用于语句的进一步操作。查询必须由单个SQL语句组成。

在执行语句或读取行之前,必须使用mysqli_stmt_bind_param()和/或mysqli_stmt_bind_result()将参数标记绑定到应用程序变量。

参数

代码语言:txt
复制
`link`   

仅过程样式:由mysqli_connect()或mysqli_init()返回的链接标识符

query

作为一个字符串 查询

注意:您不应该在语句中添加终止分号或\ g

通过在适当的位置嵌入问号()字符,此参数可以在SQL语句中包含一个或多个参数标记。

注意:标记只在SQL语句中的某些地方合法。例如,它们可以在INSERT语句的VALUES()列表中(用于指定行的列值)或与WHERE子句中的列进行比较以指定比较值。但是,在选择列表中,不允许使用标识符(例如表或列名称),该列表将名称指定为SELECT语句返回的列,或者指定二元运算符的两个操作数,例如=等号。后一种限制是必要的,因为不可能确定参数类型。它不能比较标记NULL?一片空白太。通常,参数只在数据操纵语言(DML)语句中合法,而不在数据定义语言(DDL)语句中合法。

返回值

mysqli_prepare()返回一个语句对象或发生错误时返回FALSE

例子

示例#1 mysqli :: prepare()示例

面向对象的风格

代码语言:javascript
复制
<?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();
?>

程序风格

代码语言:javascript
复制
<?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);
?>

上面的例子会输出:

代码语言:javascript
复制
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 →

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com