mysqli::stmt_init

mysqli_stmt_init

(PHP 5, PHP 7, PHP 8)

mysqli::stmt_init -- mysqli_stmt_init初始化一个语句并返回一个对象以供 mysqli_stmt_prepare 使用

描述

面向对象风格

public mysqli::stmt_init(): mysqli_stmt|false

过程化风格

mysqli_stmt_init(mysqli $mysql): mysqli_stmt|false

分配并初始化一个适合于 mysqli_stmt_prepare() 的语句对象。

注意:

在调用 mysqli_stmt_prepare() 之前,任何对 mysqli_stmt 函数的后续调用都会失败。

参数

mysql

仅限过程化风格:一个由 mysqli_connect()mysqli_init() 返回的 mysqli 对象

返回值

返回一个对象。

参见

添加备注

用户贡献的备注 2 备注

Jeff C
7 年前
stmt_init() 似乎清除了数据库连接上的先前(可能是错误的)结果,这意味着您不一定需要使用它,但它可以使代码更健壮。

在一个 PHPUnit 测试中,我有一系列针对同一个连接的准备好的查询。其中一个从 SELECT 中获取了一行,但没有继续获取直到它耗尽了连接,所以它留下了一些陈旧的结果。当下一个查询执行此操作时

<?php
$db
= $this->getConnection()->getDbConnection();
$preparedQuery = $db->prepare ($query);
?>

prepare() 调用生成一个错误:“无法准备查询:命令不同步;您现在无法运行此命令。”更改为以下内容

<?php
$db
= $this->getConnection()->getDbConnection();
$preparedQuery = $db->stmt_init();
$preparedQuery->prepare ($query);
?>

解决了问题。
mamdo7 at hotmail dot com
10 年前
您可以直接使用 $stmt = $mysqli->prepare();,无需 stmt-init()。我认为没有必要使用 stmt-init。
To Top