mysql - 修复查询 codeigniter 模型语法错误中的错误

标签 mysql codeigniter model

为什么我在 codeigniter 中的模型中出现错误:

A Database Error Occured
Error Number: 1064 
You have error in your SQL syntax;

当我尝试在 mysql 中运行它时,它工作正常。但是当我把它放在我的 CI 模型中时,它给我错误号:1064

这是我的完整模型代码:

public function checkupID() {
        $query = $this->db->query(' SELECT check_up_id FROM tbl_check_up JOIN (SELECT MAX(CAST(SUBSTRING_INDEX(check_up_id, '-', -1) AS DECIMAL)) AS max_right FROM tbl_check_up) AS x
                    ON SUBSTRING_INDEX(check_up_id, '-', -1) = max_right ');
        return $query->result();
    }

我的表结构

+-------------+----------+---------+--------+
|  Field      |  Type    |  NULL   | Key    |
+-------------+----------+---------+--------+
| check_up_id | varchar  |  NO     | PRI    |
+-------------+----------+---------+--------+
| note        | varchar  |  YES    |        |
+-------------+----------+---------+--------+

最佳答案

请在下面找到我的答案。您可以在 mysql 中创建存储过程,如下所示。

DELIMITER $$

DROP PROCEDURE IF EXISTS `getCheckUpId`$$

CREATE PROCEDURE `getCheckUpId`()
BEGIN
    SELECT 
        t1.check_up_id 
    FROM tbl_check_up t1 
    JOIN (SELECT MAX(CAST(SUBSTRING_INDEX(t2.check_up_id, '-', -1) AS DECIMAL)) AS max_right FROM tbl_check_up t2) AS x ON SUBSTRING_INDEX(t1.check_up_id, '-', -1) = x.max_right;
    END$$

DELIMITER ;

现在在您的模型中,您可以如下所述进行创建。

public function checkupID() {
    $query = $this->db->query('call getCheckUpId()');
    return $query->row();
}

希望对您有所帮助。如果它不起作用,请告诉我。

关于mysql - 修复查询 codeigniter 模型语法错误中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44771421/

相关文章:

javascript - 如何在 php 的表格中实现爆炸功能?

javascript - 使用 AJAX Codeigniter 调用 Php Controller 功能

php - 服务层和模型与领域驱动设计的关联

c# - 尝试在 View 中使用模型时出现 MVC 错误

php - 使用请求和 session 插入语句

mysql - 即使抛出异常 DUPLICATE KEY 或事务被回滚,auto_increment 值也会递增

mysql - 使用 Spark 读取 Hive

codeigniter - 如何使用codeigniter上传库在数据库中插入文件名

php - 调整图像大小并在不保存的情况下显示

python - Django官方模型教程part4