PHP
Database/MySQL

mysqli_stmt::prepare

mysqli_stmt::prepare

mysqli_stmt_prepare

(PHP 5, PHP 7)

mysqli_stmt :: prepare - mysqli_stmt_prepare - 准备执行的SQL语句

描述

面向对象的风格

mixed mysqli_stmt::prepare ( string $query )

程序风格

bool mysqli_stmt_prepare ( mysqli_stmt $stmt , string $query )

准备由空终止的字符串查询指向的SQL查询。

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

注意:如果将语句传递给服务器的max_allowed_pa​​cketmysqli_stmt_prepare(),则返回的错误代码根据您使用的是MySQL本机驱动程序(mysqlnd)还是MySQL客户端库(libmysqlclient)而不同。行为如下:

  • Linux上的mysqlnd返回一个1153的错误代码。错误消息表示“得到的数据包大于max_allowed_pa​​cket字节”。

  • Windows上的mysqlnd返回错误代码2006.此错误消息意味着“服务器已经消失”。

  • 所有平台上的libmysqlclient都会返回错误代码2006.此错误消息表示“服务器已经消失”。参数`stmt`仅限过程风格:由mysqli_stmt_init()返回的语句标识符。 query 查询,作为一个字符串。它必须由单个SQL语句组成。通过在适当的位置嵌入问号(?)字符,可以在SQL语句中包含一个或多个参数标记。 注意:您不应该在语句中添加终止分号或\ g。 注意:标记仅在SQL语句中的某些地方合法。例如,它们可以在INSERT语句的VALUES()列表中(用于指定行的列值)或与WHERE子句中的列进行比较以指定比较值。但是,它们不允许用于标识(例如表名或列名),SELECT列表中的名称将由SELECT语句返回的列),或者指定二元运算符(例如=等号)的两个操作数。后一种限制是必要的,因为不可能确定参数类型。通常,参数只在数据操纵语言(DML)语句中合法,而不在数据定义语言(DDL)语句中合法。返回值TRUE成功或返回FALSE失败。示例示例#1面向对象的样式 <?php $ mysqli = new mysqli(“localhost”,“my_user”,“my_password”,“world”); / *检查连接* / if(mysqli_connect_errno()){printf(“连接失败:%s \ n”,mysqli_connect_error()); 出口(); } $ city =“Amersfoort”; / *创建一个准备好的语句* / $ stmt = $ mysqli-> stmt_init(); 如果($ stmt-> prepare(“SELECT区域从城市WHERE名称=?”)){/ *绑定标记参数* / $ stmt-> bind_param(“s”,$ city); / *执行查询* / $ stmt-> execute(); / *绑定结果变量* / $ stmt-> bind_result($ district); / *提取值* / $ stmt-> fetch(); printf(“%s在分区%s \ n”,$ city,$分区); / * close语句* / $ stmt-> close(); } / *关闭连接* / $ mysqli-> close(); ?>示例#2程序风格<?php $ link = mysqli_connect(“localhost”,“my_user”,“my_password”,“world”); / *检查连接* / if(mysqli_connect_errno()){printf(“连接失败:%s \ n”,mysqli_connect_error()); 出口(); } $ city =“Amersfoort”; / *创建一个准备好的语句* / $ stmt = mysqli_stmt_init($ link); 如果(mysqli_stmt_prepare($ stmt,'SELECT区域从城市WHERE名称=?')){/ *绑定标记参数* / mysqli_stmt_bind_param($ stmt,“s”,$ city); / *执行查询* / mysqli_stmt_execute($ stmt); / *绑定结果变量* / mysqli_stmt_bind_result($ stmt,$ district); / *提取值* / mysqli_stmt_fetch($ stmt); printf(“%s在分区%s \ n”,$ city,$分区); / *关闭语句* / mysqli_stmt_close($ stmt); } / *关闭连接* / mysqli_close($ link); ?>上面的例子将输出:阿默斯福特是在区乌得勒支另请参见

  • mysqli_stmt_init() - 初始化一个语句并返回一个用于mysqli_stmt_prepare的对象

  • mysqli_stmt_execute() - 执行准备好的查询

  • mysqli_stmt_fetch() - 从准备好的语句中获取结果到绑定变量中

  • mysqli_stmt_bind_param() - 将变量作为参数绑定到准备好的语句

  • mysqli_stmt_bind_result() - 将变量绑定到准备好的语句以存储结果

  • mysqli_stmt_get_result() - 从预处理语句中获取结果集

  • mysqli_stmt_close() - 关闭预准备语句

← mysqli_stmt::$param_count

mysqli_stmt::reset →