与 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