【问题标题】:Count all rows from two MySQL tables in Codeigniters在 Codeigniter 中计算两个 MySQL 表中的所有行
【发布时间】:2020-12-12 10:51:18
【问题描述】:

您好需要计算两个 MySQL 表中的所有行。 表具有相同的结构,我在模型文件中使用的代码如下:

$this->regs_db->select ("*");
$this->regs_db->from("$this->table_images_civil, $this->table_images_military");

return $this->regs_db->count_all_results();

我得到的结果根本不正确。我知道在第一个表中有 10,934 行,在第二个表中有 1,299 行......但我得到的结果是 14,203,266。 上面的代码有什么问题? 非常感谢任何提示。

编辑:下表结构...两个表相同

【问题讨论】:

    标签: php mysql codeigniter


    【解决方案1】:

    首先,我会放弃 Code Igniter 的 DB 方法。它们(在我看来)对于除了基本查询结构之外的任何东西都是阻碍和无用的。

    考虑到这一点,您可以通过以下方式实现您想要的:

    $sql = '
    SELECT
        (SELECT COUNT(id) FROM `'.$this->table_images_civil.'`) AS tbl1Count,
        (SELECT COUNT(id) FROM `'.$this->table_images_military.'`) AS tbl2Count';
    $request = $this->regs_db->query($sql);
    $arr = $request->fetch_assoc();
    

    【讨论】:

    • 感谢米蒂亚的反馈。上面的代码返回 1 作为计数...也许我错过了什么?
    • 不,应该可以。您应该得到两列,每列都包含它们所代表的表中的计数。如果这不起作用,请编辑问题以包含相关表的架构。
    • 非常感谢 Mitya 的宝贵帮助和耐心。在模型文件中,我使用 return $request->result(); 返回查询结果在控制器中我应该有两个变量: tbl1Count 和 tbl2Count ...但到目前为止我得到的总数为 0。用表格结构更新了上面的问题
    • 不客气。如果您不使用 CI 方法(根据我的建议)而只使用本机 MySQLi 功能怎么办?尝试使用我上面的确切代码(我添加了一个新行,以将结果作为数组检索)。运行它然后运行var_dump($arr) - 什么?
    • 非常感谢您的所有时间和提示 Mitya。我会深入测试你的代码并检查。
    【解决方案2】:
    $this->db->from('yourtable');
    [... more active record code ...]
    $query = $this->db->get();
    $rowcount = $query->num_rows();
    

    【讨论】:

    • 感谢哈马德的反馈;您的代码可以很好地计算一个表中的行...而不是多个表。
    猜你喜欢
    • 2021-11-07
    • 2011-02-11
    • 2019-03-04
    • 1970-01-01
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    • 2011-09-02
    • 1970-01-01
    相关资源
    最近更新 更多