php - 将 sql 查询转换为 php codeigniter

标签 php mysql codeigniter

我一直在尝试从我的表中获取总和。然而,我似乎用 sql 得到了结果,但用 CodeIgniter 却没有得到结果,尽管我确保查询是相似的。 我没有得到任何结果,我不知道我到底做错了什么。

MySql查询

SELECT SUM( amount_paid ) AS theSum
FROM invoice
WHERE MONTH( FROM_UNIXTIME( creation_timestamp ) ) =10
AND YEAR( FROM_UNIXTIME( creation_timestamp ) ) =2015

我的 CodeIgniter 查询

<?php 
  echo $this->db->select('(SELECT SUM(amount_paid) FROM invoice WHERE MONTH (creation_timestamp` ) = 10) AS invoice');

  $query = $this->db->get('invoice'); 
?>

我也尝试过

<div class="num" data-start="0" data-end="
 <?php 
  $this->db->select('SUM(amount_paid) as total');
  $this->db->where('creation_timestamp', 10);
  $q=$this->db->get('invoice');
  $row=$q->row();
  $total=$row->total;
 ?>"

  data-postfix="" data-duration="1500" data-delay="0">0</div>

  <h3><?php echo $total ;?></h3>
  <p>Total Payments</p>
</div>

我的架构

CREATE TABLE `invoice`(
 `invoice_id` int(11) NOT NULL AUTO_INCREMENT,
 `student_id` int(11) NOT NULL,
 `title` longtext COLLATE utf8_unicode_ci NOT NULL,
 `description` longtext COLLATE utf8_unicode_ci NOT NULL,
 `amount` int(11) NOT NULL,
 `amount_paid` longtext COLLATE utf8_unicode_ci NOT NULL,
 `due` longtext COLLATE utf8_unicode_ci NOT NULL,
 `creation_timestamp` int(11) NOT NULL,
 `payment_timestamp` longtext COLLATE utf8_unicode_ci NOT NULL,
 `payment_method` longtext COLLATE utf8_unicode_ci NOT NULL,
 `payment_details` longtext COLLATE utf8_unicode_ci NOT NULL,
 `status` longtext COLLATE utf8_unicode_ci NOT NULL COMMENT 'paid or unpaid',
 PRIMARY KEY (`invoice_id`)
) ENGINE=MyISAM AUTO_INCREMENT=73 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

最佳答案

根据您的 MySQL 查询,codeIgniter 事件记录将起作用,

$this->db->select("SUM( amount_paid ) AS theSum");
$this->db->from("invoice");
$this->db->where("MONTH( FROM_UNIXTIME( creation_timestamp ) ) =10",null, true);
$this->db->where("YEAR( FROM_UNIXTIME( creation_timestamp ) ) =2015",null,true);
$rec = $this->db->get();

MySQL 输出将是:

SELECT SUM( amount_paid ) AS theSum 
FROM `invoice` 
WHERE MONTH( FROM_UNIXTIME( creation_timestamp ) ) = 10 
AND YEAR( FROM_UNIXTIME( creation_timestamp ) ) = 2015

或者,您可以直接将查询放入事件记录中,例如:

$rec = "SELECT SUM( amount_paid ) AS theSum
FROM invoice
WHERE MONTH( FROM_UNIXTIME( creation_timestamp ) ) =10
AND YEAR( FROM_UNIXTIME( creation_timestamp ) ) =2015";

$this->db->query($rec);

关于php - 将 sql 查询转换为 php codeigniter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34248019/

相关文章:

PHP 准备语句...将变量绑定(bind)为 REGEXP 中的数字范围?

php - 如何隐藏MySQL查询的行?

mysql - 加入限制结果的查询

php - 如何显示类别及其子类别

php - 使用 Codeigniter 3.0.1 在数据库中上传图像

php - Laravel/Lumen api 过滤器

php - bigcommerce api php 获取订单优惠券

php - 如何使用 CodeIgniter 在 SQL Server 数据库中存储多字节字符

PHP:同时理解 POST 和 GET 时遇到困难

php - Codeigniter 查询结果返回带有 setter 的自定义结果对象