php - MySQL直接运行但CodeIgniter出现语法错误

标签 php mysql sql codeigniter mysqli

编辑:我发现问题出在 PHP 中的多个查询上,那么 codeigntier 有什么解决办法呢?我是否必须使用 mysqli 函数本身,或者我可以使用内置的 Codeigniter DB 类吗?

我有一个查询,当我将其粘贴到 PHPMyAdmin 中时运行良好,但是当我在 codeigniter 中运行它时,它会导致语法错误,任何人都可以提供帮助吗?

这是 SQL

SET @sql = NULL;

SELECT 
    GROUP_CONCAT(DISTINCT
        CONCAT(
            'MAX(IF(user_fields_to_users.map_field_id=''',field_id,''',user_fields_to_users.map_data,NULL)) AS ', field_name)) INTO @sql

FROM user_custom_fields;

SET @sql = CONCAT('SELECT *
                    ,', @sql, '
                    FROM user_accounts  LEFT JOIN user_fields_to_users ON
                    user_accounts.user_id = user_fields_to_users.map_user_id
          GROUP BY user_accounts.user_id');

PREPARE stmt FROM @sql;

EXECUTE stmt;

我正在使用 mysqli 和 codeigniters $this->db->query();

我收到的错误是

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT GROUP_CONCAT(DISTINCT CONCAT( 'MAX(IF(user_fields_t' at line 3

最佳答案

改变

'MAX(IF(user_fields_to_users.map_field_id

MAX(IF('user_fields_to_users.map_field_id

关于php - MySQL直接运行但CodeIgniter出现语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22016352/

相关文章:

php - 如何使用 curl 和 php 连接到安全 (https) 代理?

MySQL历史数据查找

sql - Oracle:如何在where子句中按日期和时间过滤

PHP 为什么我的函数返回具有不同键的数组结果的两倍?

php - 使用链接或按钮下载 Blob 文件

php - 代码点火器/PHP/MySQL : Retrieving data with JOIN

MYSQL - 无法删除列

mysql - 合并来自2个供应商相同产品但不同ID的两个mysql表

MYSQL:SQL查询仅当所有行都满足条件时才返回一行

Mysql 通过使用用户付款表的连接更新约 10 万用户