【问题标题】:MySQLi not returning results from a JOIN prepared statementMySQLi 未从 JOIN 准备好的语句返回结果
【发布时间】:2026-01-20 07:30:01
【问题描述】:
function fullJoinTest()
{
    $con = ModelBase::getConnection();
    $sql = "SELECT airline, airport
            FROM airlines
            LEFT JOIN airports on airlines.icao_code = airports.icao_code";
    $query = $con->prepare($sql) or die("Error preparing sql in Search (test) ");

    $query->execute() or die("Error executing query in Search (test) ");

    error_log($query->num_rows);
}

现在它不断返回 0 以返回它返回的行数。当我将相同的查询插入 phpMyAdmin 时,它会返回预期的结果集。

MySQLi 可以很好地处理 JOIN 吗?还有其他方法可以解决这个问题吗?最终它将有更多的连接和一些WHERE 子句。我想继续使用准备好的语句。

【问题讨论】:

  • 您是否使用与 phpMyAdmin 相同的凭据从 PHP 连接到数据库?
  • 是的,它们是相同的。
  • 如果您在数据库中启用查询跟踪,您是否看到来自 php 的 0 行查询以及来自 phpmyadmin 的查询?
  • 如何启用查询跟踪?我唯一拥有的数据库访问权限是通过 phpMyAdmin。

标签: php mysql join mysqli


【解决方案1】:

您还没有读取这些行,因此它不知道生成了多少行。 调用 $query->store_result();将行缓冲到内存中。

http://www.php.net/manual/en/mysqli-stmt.num-rows.php

http://www.php.net/manual/en/mysqli-stmt.store-result.php

【讨论】:

    最近更新 更多