mysqli_stmt:准备
mysqli_stmt_prepare
准备执行SQL语句
描述
面向对象的风格
公共保龄球mysqli_stmt:准备(字符串查询);
程序上的风格
保龄球mysqli_stmt_prepare(mysqli_stmt声明,
字符串查询);
准备执行语句。查询必须包含一条SQL语句。
语句模板可以包含零个或多个问号(?
参数标记]——也称为占位符。参数标记必须使用绑定到应用程序变量mysqli_stmt_bind_param
在执行语句之前。
请注意
在传递语句到的情况下mysqli_stmt_prepare
这比max_allowed_packet
,根据是否使用MySQL Native Driver (mysqlnd
)或MySQL客户端库(libmysqlclient
).行为如下:
mysqlnd
在Linux上返回1153的错误代码。错误消息意味着”有一个比max_allowed_packet
字节”.mysqlnd
在Windows上返回错误代码2006。这个错误消息意味着”服务器消失了”.libmysqlclient
在所有平台上返回错误代码2006。这个错误消息意味着”服务器消失了”.
参数
-
支撑
-
方法返回的语句标识符
mysqli_stmt_init
. -
查询
-
查询,作为字符串。它必须由单个SQL语句组成。
SQL语句可以包含零个或多个由问号(
?
)字符放在适当的位置。请注意这些标记只在SQL语句的某些地方是合法的。例如,他们被允许在
值()
一个列表插入
语句(为一行指定列值),或与中的列进行比较在哪里
子句指定一个比较值。但是,它们不允许用于标识符(如表名或列名),也不允许指定二进制操作符的两个操作数
=
等号。后一个限制是必要的,因为不可能确定参数类型。通常,参数只在数据操作语言(DML)语句中合法,而在数据定义语言(DDL)语句中不合法。
返回值
返回真正的
在成功或假
在失败。
例子
例3.94mysqli_stmt:准备
例子
面向对象的风格
<?php mysqli_report(MYSQLI_REPORT_ERROR);$mysqli = new mysqli("localhost", "my_user", "my_password", "world");$城市=“阿默斯福特”;*/ $stmt = $mysqli->stmt_init();$stmt->prepare("SELECT District FROM WHERE Name=?");/*绑定标记参数*/ $stmt->bind_param("s", $city);/*执行查询*/ $stmt->execute();绑定结果变量*/ $stmt->bind_result($district);/*获取值*/ $stmt->获取(); printf("%s is in district %s\n", $city, $district);
程序上的风格
<?php mysqli_report(MYSQLI_REPORT_ERROR);$link = mysqli_connect("localhost", "my_user", "my_password", "world");$城市=“阿默斯福特”;/ / $stmt = mysqli_stmt_init($link);mysqli_stmt_prepare($stmt, "SELECT District FROM WHERE Name=?");*/ mysqli_stmt_bind_param($stmt, "s", $city);/*执行查询*/ mysqli_stmt_execute($stmt);/ / mysqli_stmt_bind_result($stmt, $district);/ / mysqli_stmt_fetch($stmt); printf("%s is in district %s\n", $city, $district);
上面的例子将输出:
阿默斯福特位于乌得勒支区
另请参阅
mysqli_stmt_init |
mysqli_stmt_execute |
mysqli_stmt_fetch |
mysqli_stmt_bind_param |
mysqli_stmt_bind_result |
mysqli_stmt_get_result |
mysqli_stmt_close |