php - SQL 到 CodeIgniter 数组丢失数据问题

标签 php sql mysql arrays codeigniter

$query = $this->db->query("SELECT t1.numberofbets, t1.profit, t2.seven_profit, t3.28profit, user.user_id, username, password, email, balance, user.date_added, activation_code, activated FROM user LEFT JOIN (SELECT user_id, SUM(amount_won) AS profit, count(tip_id) AS numberofbets FROM tip GROUP BY user_id) as t1 ON user.user_id = t1.user_id LEFT JOIN (SELECT user_id, SUM(amount_won) AS seven_profit FROM tip WHERE date_settled > '$seven_daystime' GROUP BY user_id) as t2 ON user.user_id = t2.user_id LEFT JOIN (SELECT user_id, SUM(amount_won) AS 28profit FROM tip WHERE date_settled > '$twoeight_daystime' GROUP BY user_id) as t3 ON user.user_id = t3.user_id where activated = 1 GROUP BY user.user_id ORDER BY user.date_added DESC");

return $query->result_array();

查询在 phpMyAdmin 中运行良好并返回完整的结果(在附图中)。然而,在 CodeIgniter 中打印数组,它没有一个字段 seven_profit 的值,它在 phpMyAdmin 中运行的 SQL 查询中的位置,只是这一字段中的差异,从 sql 到 php 数组......我只是可以'不明白为什么在打印数组时,那个值应该为 26 的字段什么都不包含?有任何想法吗?我更改了以数字开头的字段名称以尝试修复它,但没有区别。

我知道这很复杂而且看起来很糟糕,如果有任何帮助或遇到类似情况的人会很高兴知道,谢谢。

山姆


编辑:查询更格式化:

$query = $this->db->query("
  SELECT
    t1.numberofbets, t1.profit, t2.seven_profit, t3.28profit,
    user.user_id, username, password, email,
    balance, user.date_added, activation_code, activated
  FROM
    user
  LEFT JOIN
    (
      SELECT
        user_id,
        SUM(amount_won) AS profit,
        count(tip_id) AS numberofbets
      FROM
        tip
      GROUP BY
        user_id
    ) as t1
  ON
    user.user_id = t1.user_id
  LEFT JOIN
    (
      SELECT
        user_id,
        SUM(amount_won) AS seven_profit
      FROM
        tip
      WHERE
        date_settled > '$seven_daystime'
      GROUP BY
        user_id
    ) as t2
  ON
    user.user_id = t2.user_id
  LEFT JOIN
    (
      SELECT
        user_id,
        SUM(amount_won) AS 28profit
      FROM
        tip
      WHERE
        date_settled > '$twoeight_daystime'
      GROUP BY
        user_id
    ) as t3
  ON
    user.user_id = t3.user_id
  WHERE
    activated = 1
  GROUP BY
    user.user_id
  ORDER BY
    user.date_added DESC
");

最佳答案

好的,问题是 SQL 查询包含 PHP 变量,这些变量必须被视为 0 或其他不会出错的东西,所以它在 seven_profit 中显示一个值专栏。

当查询在 CodeIgniter 中运行时,它为 $seven_daystime 变量使用了正确的值,因此当数据被放入数组时结果是不同的。

/怪累了

关于php - SQL 到 CodeIgniter 数组丢失数据问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2937427/

相关文章:

sql - 添加 LEFT JOIN 后损坏的计数 (*)

PHP:在mysql中的时间戳值内拆分日期和时间

php - 计算总和值 jQuery PHP

php - MySQL - 有没有办法将表数据与给定字符串匹配,而不是反之亦然

php - 托管服务器上的 mysqli

php - jQuery $.ajax() 到 PHP CURL

sql - MySQL : return "0" & "1" rather than "false" & "true"

mysql - SQL正则表达式大于

php - MySQL 多个重复行 - 只返回一个

javascript - PHP在事件页面上显示后端脚本的输出