【问题标题】:PHP `mysqli_multi_query` cannot return a valuePHP `mysqli_multi_query` 无法返回值
【发布时间】:2021-05-02 21:06:48
【问题描述】:

一个简单的例子

$connection = mysqli_connect("domain", "user", "psw", "db");
$response = mysqli_multi_query($connection, "
    SET @a = 'foo';
    SET @b = 'bar';
    SELECT @a AS A, @b AS B
");

var_dump(mysqli_field_count(connection));
var_dump(mysqli_use_result($connection));
var_dump(mysqli_store_result($connection));
var_dump(mysqli_more_results($connection));
var_dump(mysqli_next_result($connection));

返回(美化)

int(0)
bool(false)
bool(false)
bool(true)
bool(true)

怎么了?我只是误解了如何从mysqli_multi_query 获取值吗? 为什么它在mysqli_field_count 中返回0? 如果出现语法错误,如何获取其编号或描述?

提前致谢!

【问题讨论】:

  • 不要使用mysqli_multi_query
  • SET @a = 'foo'; 不会产生结果。这就是为什么你看到 0
  • mysqli_use_resultmysqli_store_result 一起使用没有意义。显然你不知道mysqli_multi_query 是干什么用的。不要使用此功能
  • @Dharman 我已经使用了这两个函数来显示它们的输出。我知道必须使用 mysqli_multi_query,这是一个简单的例子。在我的实际任务中,我需要一次发送 7 个语句,但这种情况或那种情况下的效果是一样的。
  • @Dharman 所以每个语句都有自己的输出,即使它实际上没有返回值(SET、INSERT…)?

标签: php mysql mysqli mysqli-multi-query


【解决方案1】:

不要使用mysqli_multi_query()。每个查询都应该单独发送到服务器。

这样做:

$response1 = mysqli_query($connection, "SET @a = 'foo'");
$response2 = mysqli_query($connection, "SET @b = 'bar'");
$response3 = mysqli_query($connection, "SELECT @a AS A, @b AS B");
$row = mysqli_fetch_assoc($response3);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    • 2016-10-14
    • 2012-06-10
    • 1970-01-01
    • 2012-11-05
    • 1970-01-01
    相关资源
    最近更新 更多