【问题标题】:Codeigniter request sql but my code returns me an errorCodeigniter 请求 sql 但我的代码返回错误
【发布时间】:2018-02-02 22:54:52
【问题描述】:

我希望显示 SQL 请求的结果,但我的代码返回了一个我无法解决的错误。如果有人可以帮助我,我将不胜感激。

我正在使用 Codeigniter。

<?php defined('BASEPATH') OR exit('No direct script access allowed');

class Dropdown extends CI_Controller {

    public function __construct()
    {
        parent::__construct();  
    }

    public function index()
    {   
        $data['title']='Dependent Dropdown List';
        $data['page']='index';
        $data['MANUFACTURERS'] = $this->book_model->get_author();
        $this->load->view('index', $data);
    }


    public function ctest()
    {
        $data['MODELS'] = $this->book_model->test();
        $this->load->view('ajax_get_book',$data);
    }

}
?>

<?php defined('BASEPATH') OR exit('No direct script access allowed');

class book_model extends CI_Model {


    function __construct(){
        // Call the Model constructor
        parent::__construct();        
    }
    public function test() {   
        $lang = 6;
        $code = 533001410;

        $query = $this->db->query("SELECT DISTINCT
         IF (ART_LOOKUP.ARL_KIND IN (3, 4), BRANDS.BRA_BRAND, 
         SUPPLIERS.SUP_BRAND) AS 
         BRAND, ART_LOOKUP.ARL_SEARCH_NUMBER AS NUMBER, ART_LOOKUP.ARL_KIND,    
         ART_LOOKUP.ARL_ART_ID, DES_TEXTS.TEX_TEXT AS ART_COMPLETE_DES_TEXT
         FROM       ART_LOOKUP
         LEFT JOIN BRANDS ON BRANDS.BRA_ID = ART_LOOKUP.ARL_BRA_ID
         INNER JOIN ARTICLES ON ARTICLES.ART_ID = ART_LOOKUP.ARL_ART_ID
         INNER JOIN SUPPLIERS ON SUPPLIERS.SUP_ID = ARTICLES.ART_SUP_ID
         INNER JOIN DESIGNATIONS ON DESIGNATIONS.DES_ID = 
         ARTICLES.ART_COMPLETE_DES_ID
         INNER JOIN DES_TEXTS ON DES_TEXTS.TEX_ID = DESIGNATIONS.DES_TEX_ID
         WHERE  ART_LOOKUP.ARL_SEARCH_NUMBER = '.$code.' AND    
         ART_LOOKUP.ARL_KIND 
         IN (1, 2, 3, 4) AND    DESIGNATIONS.DES_LNG_ID = '.$lang.'
         GROUP BY   BRAND,  NUMBER");
         return $query->result();
    }
}
?>

错误号:1055
SELECT 列表的表达式 #3 不在 GROUP BY 子句中,并且包含非聚合列 'dpazine.ART_LOOKUP.ARL_KIND',它在功能上不依赖于 GROUP BY 子句中的列;这与 sql_mode=only_full_group_by 不兼容

SELECT DISTINCT IF (ART_LOOKUP.ARL_KIND IN (3, 4), BRANDS.BRA_BRAND, SUPPLIERS.SUP_BRAND) AS BRAND, ART_LOOKUP.ARL_SEARCH_NUMBER AS NUMBER, ART_LOOKUP.ARL_KIND, ART_LOOKUP.ARL_ART_ID, DES_TEXTS.TEX_TEXT AS ART_COMPLETE_DES_TEXT在 BRANDS.BRA_ID = ART_LOOKUP.ARL_BRA_ID 上加入品牌 在 ARTICLES.ART_ID = ART_LOOKUP.ARL_ART_ID 上加入品牌= DESIGNATIONS.DES_TEX_ID WHERE ART_LOOKUP.ARL_SEARCH_NUMBER = '.533001410.' AND ART_LOOKUP.ARL_KIND IN (1, 2, 3, 4) AND DESIGNATIONS.DES_LNG_ID = '.6.'分组
品牌,号码

文件名:C:/wamp64/www/CodeIgniter/system/database/DB_driver.php
行号:691

【问题讨论】:

  • 先在 phpmyadmin 中运行查询并检查

标签: php mysql sql-server codeigniter


【解决方案1】:

这对你的查询没有任何问题,那就是 mysql 配置问题

解决方案

打开我的.cnf Mysql 配置文件

把这段代码放在那里,问题就解决了

[mysqld]
sql_mode=''

【讨论】:

    【解决方案2】:

    您的 GROUP BY 子句不包含 SELECT 中的所有非聚合字段,例如 ART_LOOKUP.ARL_KIND、ART_LOOKUP.ARL_ART_ID、DES_TEXTS.TEX_TEXT AS ART_COMPLETE_DES_TEXT。

    查看此链接了解更多...

    https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html

    也许将这些字段添加到您的 GROUP BY 中?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-05
      • 2017-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多