首页 > 数据库 > mysql教程 > 为什么在 PHP 的 MySQLi 准备语句中出现'命令不同步”错误,如何修复它们?

为什么在 PHP 的 MySQLi 准备语句中出现'命令不同步”错误,如何修复它们?

Linda Hamilton
发布: 2025-01-23 01:08:08
原创
982 人浏览过

Why Do I Get

PHP 中的命令不同步错误:理解和解决

在准备任何查询之前,必须执行查询“SET NAMES 'utf8'”,因为它设置数据库连接的字符集,并影响后续查询中数据的解释。

由于 MySQL 在预处理语句中默认使用非缓冲查询,因此在单个脚本中运行多个查询可能会导致问题。mysqli 执行立即查询,需要完成一个查询才能执行另一个查询。要解决此问题,您可以选择以下两种方法:

1. 将结果提取到数组中

此方法涉及执行第一个查询,将其结果提取到数组中,然后执行第二个查询。下面的代码演示了这一点:

<code class="language-php">$con = mysqli_connect("localhost", "user", "password", "db");
if (!$con) {
    echo "无法连接到 MySQL 服务器。错误代码:%s\n". mysqli_connect_error();
    exit;
}
// 设置字符集
$con->query("SET NAMES 'utf8'");

// 第一个查询
$countQuery = "SELECT ARTICLE_NO FROM AUCTIONS WHERE upper(ARTICLE_NAME) LIKE % ? %";
$numRecords = $con->prepare($countQuery);
$numRecords->bind_param("s", $brand);
$numRecords->execute();
$result = $numRecords->get_result(); // 将结果提取到数组中
$rowcount = $result->num_rows;

// 第二个查询
$rows = getRowsByArticleSearch("test", "Auctions", " ");</code>
登录后复制

2. 缓冲查询

使用 store_result() 指示 mysqli 缓冲查询结果,允许您同时执行多个查询。通过在 prepare() 语句之后添加以下行来实现此目的:

<code class="language-php">$stmt->store_result();</code>
登录后复制

这将有效地将查询结果保存在缓冲区中,允许您执行第二个查询而不会遇到“命令不同步”错误。

以上是为什么在 PHP 的 MySQLi 准备语句中出现'命令不同步”错误,如何修复它们?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板