与 Mysql phpmyadmin 相比,Codeigntier 中的查询结果不同

Posted

技术标签:

【中文标题】与 Mysql phpmyadmin 相比,Codeigntier 中的查询结果不同【英文标题】:Query results are different in Codeigntier as compare to Mysql phpmyadmin 【发布时间】:2018-04-23 09:04:30 【问题描述】:

今天我面临一个基于循环迭代创建动态查询的问题。下面是我的代码。

我的模特

public function get_chapters_from_subject()

if(COUNT($_REQUEST['subjects']) > 1)

   $this->db->where_in('question_modules', $_REQUEST['subjects']);
   $y = $this->db->get($this->db->dbprefix('multi_bind_question'));
   print_r($this->db->last_query());
   print_r($y->result()); 
 
 else
    echo "Only One ";
 

在得到不同的结果后,我通过打印由 codeigniter 生成的查询来检查它。没事。查询如下

打印后生成的查询,看起来像

SELECT * FROM `app_multi_bind_question` WHERE `question_modules` IN('10+1 Math', '10+2 Math')

结果问题

如果我在 mysql/phpmyadmin 上运行相同的查询,则它返回 3 行(更正结果)。但是当我在上面提到的codeigniter模型函数中打印查询返回的结果时,它只返回一条记录。

PHPMYADMIN 屏幕截图 - 更正结果 请帮帮我!提前谢谢..

打印结果后我只得到了这个

【问题讨论】:

您可以通过$this->db->where_in('question_modules', $_REQUEST['subjects']); 使您的代码更具可读性您的问题是什么,我似乎是如果您通过 CI 和 phpadmin 询问不同的数据库或表 @splash,它是同一张表..请检查我在打印结果后得到的查询..当我在 phpmyadmin 上运行它时,它会给我正确的结果,但是当我通过代码运行它时上面,它返回不同的结果。 echo count($y->result()); 它说只有1条记录,但正确的结果应该是3..数据库中有3条记录,打印查询后,查询看起来像: - SELECT * FROM app_multi_bind_question WHERE question_modules IN ('10+1 数学', '10+2 数学') phpmyadmin 与任何 php 库的 mysql 进程接口相同,CI 正在使用(例如 mysqli)。两者都只是发送文本查询并接收处理结果。我无法想象结果可以在哪里改变。区别应该是的。从问题中不清楚,但必须是:) 【参考方案1】:

试试这个!

public function get_chapters_from_subject()

if(COUNT($_REQUEST['subjects']) > 1)

   $this->db->where_in('question_modules', $_REQUEST['subjects']);
   $y = $this->db->get($this->db->dbprefix('multi_bind_question'));
   print_r($this->db->last_query());
   print_r($y->result_array()); 
 
 else
    echo "Only One ";
 

【讨论】:

【参考方案2】:

在我看来,如果您的查询是正确的,那么您至少应该试试这个:

public function get_chapters_from_subject()
    if(COUNT($_REQUEST['subjects']) > 1)
        $sql = $this->db->query("SELECT * FROM `app_multi_bind_question` WHERE `question_modules` IN('10+1 Math', '10+2 Math')");
        $query = $this->db->query($sql);
        print_r($this->db->last_query());
        return $query->result_array();
    else
         echo "Only One ";
    
   

【讨论】:

【参考方案3】:

您的数据库表(模块)有问题。在您的 模块表 中将值更改为 10+2 Math,然后结果将按预期出现。

由于这两个表的值不匹配,您没有获得价值。

模数表为10+2数学(有两个空格)

在 multi_bind_question 表中它存储为 10+2 数学(它有一个空格)

您的代码没有错误...

希望它会;解决你的问题

【讨论】:

以上是关于与 Mysql phpmyadmin 相比,Codeigntier 中的查询结果不同的主要内容,如果未能解决你的问题,请参考以下文章

MySQL - 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册以获取正确的语法 - phpMyAdmin

使用 phpMyAdmin 同步 MySQL 远程和本地数据库

django、phpmyadmin 和 mysql?

phpMyAdmin 表与 MySQL 视图

phpMyAdmin 连接 MySQL 服务器失败

phpmyadmin连接MySQL服务器被拒绝