PHP
Database/MySQL

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 →