Отсутствие данных в массиве SQL для CodeIgniter - PullRequest
1 голос
/ 30 мая 2010
$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, где он находится в SQL-запросе, выполняемом в phpMyAdmin, только несоответствие в этом одном поле, от sql до php-массива ... Я просто могу ' Не понятно, почему при печати массива это поле, которое должно иметь значение 26, ничего не содержит? Есть идеи? Я изменил имя поля, начиная с номера, чтобы исправить его, но без разницы.

Я знаю, что это сложно и выглядит ужасно, любая помощь или просто люди, сталкивающиеся с чем-то похожим, было бы здорово узнать, спасибо.

Sam


edit: запрос немного более отформатирован:

$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
");

1 Ответ

0 голосов
/ 30 мая 2010

Хорошо, проблема в том, что SQL-запрос включает переменные PHP, эти переменные должны рассматриваться как 0 или как-то без ошибок, поэтому в столбце seven_profit отображается значение.

Когда запрос выполняется в CodeIgniter, он использует правильное значение для переменной $seven_daystime, и поэтому результат отличается, когда данные помещаются в массив.

/ винит усталость

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...