【问题标题】:CodeIgniter db->query returning false on SELECTCodeIgniter db->query 在 SELECT 上返回 false
【发布时间】:2016-01-20 12:41:50
【问题描述】:

这个特殊的应用程序已经使用了一年多,并且使用了几十个模型,我只是在使用这个特殊的新功能时遇到了问题。

public function get_slides($promo = NULL) {

    $sql = "SELECT description as alt, image, link
    FROM " . CONFIG_DATABASE . ".slides
    WHERE active = '1' AND acct_no = '" . API_ACCT . "' ORDER BY priority ASC;";

    $query = $this->db->query($sql);

    var_dump($sql);
    var_dump($query);

    return $query->result_array();

}

这样的结果是:

string 'SELECT description as alt, image, link
        FROM web_config_development.slides
        WHERE active = '1' AND acct_no = '10001' ORDER BY priority ASC;' (length=143)
boolean false

接着是:

致命错误:在非对象上调用成员函数 result_array()

查询在 MySQL Workbench 中运行良好。在我搜索这个问题时,我遇到了一些文档,这些文档在 INSERT 和 DELETE 上引用了真/假响应,但在 SELECT 上没有。

这没有任何意义......如果您有任何想法,将不胜感激。

【问题讨论】:

  • 我不知道 CodeIgniter 查询类是如何工作的,但是查询字符串末尾的 ; 可能是不允许的?
  • 你确定你的数据库助手已经加载了吗?
  • 永不失败,追问栈溢出问题,马上解决。这是表权限。
  • 你是否开启了 CI 的分析器 $this->output->enable_profiler(TRUE);到原始查询?
  • @David 您可以将其添加为答案,以帮助将来遇到同样问题的人。

标签: php mysql codeigniter


【解决方案1】:

如果使用 result_array() 那么首先会检查查询中的行数

if($query->num_rows()>0){
   return $query->result_array();  
}else {
   return 0; 
}

【讨论】:

    【解决方案2】:

    问题是表权限。应用程序用户未添加到新表中。

    【讨论】:

    • 当查询产生任何类型的错误并且db_debug 被关闭时,似乎会发生这种情况。如果其他用户有这个问题,那么您的查询中有错误或当前用户的权限问题,这会触发错误。 CodeIgniter 只是在 $this->db->get() 函数上返回 false。确保在 database.php 配置文件中将 db_debug 设置为 true,以便 CodeIgniter 为您显示有用的错误消息。
    【解决方案3】:

    我相信你调用了错误的方法来得到结果。

    试试这个

    return $query->result();
    

    有关 Codeigniter 活动记录的更多信息,请转到 here

    【讨论】:

    • $query->result();给出一个对象。 $query->result_array();给出一个关联数组。
    猜你喜欢
    • 2016-12-29
    • 2017-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多