在CodeIgniter,SQL中调用boolean上的成员函数result()

时间:2017-11-20 13:08:21

标签: php sql codeigniter

我试图根据搜索关键字查看$ data ['结果']中的数据,但每次都会遇到上述致命错误,有人可以帮我解决。 我的控制器

var MyComponent = Vue.extend({
  template: '<div>Hello!</div>'
})

new MyComponent().$mount('#app')

我的模特:

public function execute_search()
{
    $search_term = $this->input->post('search');
    $data['results'] = $this->UserModel->get_results($search_term);
    print_r($results); die;
    //$this->load->view('search_result',$data);
}

10 个答案:

答案 0 :(得分:0)

您将结果存储在$data['results']并打印$results

那怎么办呢? 打印$data['results']如下

 print_r($data['results']); die;

您可以在视图中使用$results

答案 1 :(得分:0)

从return语句中删除result(),如下所示: public function get_results($search_term) { //var_dump($search_term);die; $this->db->select('*'); $this->db->from('Competitor_Products'); $this->db->where('CProduct_Article_Number', $search_term); return $this->db->get(); }

答案 2 :(得分:0)

我建议您先检查以下基本内容,这可能对您有所帮助......

您是否获得了正确的搜索字符串

echo $search_term = $this->input->post('search');

$this->UserModel是否正确指向模型(后跟文件名约定)

您还可以使用以下内容检查您的查询是否正确构建

Echo query before execution and without execution in codeigniter Active Record

/* SELECT */ $this->db->_compile_select();
/* INSERT */ $this->db->_insert();
/* UPDATE */ $this->db->_update();

答案 3 :(得分:0)

您必须更改print_r()

setOnClickListener

答案 4 :(得分:0)

这可能是因为CI无法正确转义查询值的位置。如果没有看到$search_term是什么,很难确定。您可以通过更改此行

轻松查看这是否是问题
$this->db->where('CProduct_Article_Number', $search_term);

到此

$this->db->where('CProduct_Article_Number', $search_term, FALSE);

这将关闭变量和标识符的转义。

答案 5 :(得分:0)

我有类似的问题,但是解决方案对我来说很简单。 我知道为时已晚,但可以帮助遇到相同问题的其他人。

if($this->db->get() === false){
 return false;
}
return $this->db->get()->result();

答案 6 :(得分:0)

我遇到了同样的问题,我的应用程序运行良好,直到两天前我开始遇到相同的错误。弄清楚查询根本不返回任何数据,并得到了您提到的相同错误。不知何故,我找到了一个对我有用的解决方案。我必须编辑我在CI中使用的mysqli驱动程序。

第147行/public_html/system/database/drivers/mysqli/mysqli_driver.php 我更改了以下代码

          `$this->_mysqli->options(MYSQLI_INIT_COMMAND,
                'SET SESSION sql_mode =
                REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
                @@sql_mode,
                "ONLY_FULL_GROUP_BY,", ""),
                ",ONLY_FULL_GROUP_BY", ""),
                "ONLY_FULL_GROUP_BY", ""),
                "ONLY_FULL_GROUP_BY,", ""),
                ",ONLY_FULL_GROUP_BY", ""),
                "ONLY_FULL_GROUP_BY", "")'
            );`

此准则

striction

并确保在/ application / config /文件夹下的database.php文件中将FALSE设置为'stricton' => FALSE,。像这样{{1}}

答案 7 :(得分:0)

This picture is for Controller

在加载后忘记传递参数时出现问题,要加载模型的示例包含已参数化以执行某些功能的方法,您将在Controller上执行此操作

    <?php
class example extends CI_Controller{
public function send(){
    $this->load->model('modelname'); //call the model name
    $this->modelname->methodName($variable); //variable contain data that need to be saved on database
}
}
    ?>

This picture is for Model

参数化后,该方法包含$ variable数据以便访问数据库模型将对此人员有效。因此,您必须参数化模型的方法。例如,您将这样编写代码。

<?php
class modelname extends CI_Model{
    public function methodName($email){
        $this->db->set('password', $this->input->post('npass'));
        $this->db->where('email', $email;
        $query = $this->db->update('test');

        if($query->Result()){
            return true;
        }else{
            return false;
        }
    }
}
}
?>

我希望其中的一些示例可以帮助您解决此类错误

答案 8 :(得分:0)

替换以下行

import * as moment from 'moment';
import 'moment-duration-format';

使用

const seconds: number = Math.floor(process.uptime());
const formatted: string = moment.duration(seconds, 'seconds').format({
  precision: 0,
  template: 'y [years], w [weeks], d [days], h [hours], m [minutes], s [seconds]',
});

答案 9 :(得分:0)

您还可以在MySQL窗口中使用以下命令进行验证:

mysql> REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''); 

谢谢!和平。

其他参考:

  1. Call to a member function result() on boolean in CodeIgniter, SQL回答Gourav Bassi,20181023T1536
  2. Disable ONLY_FULL_GROUP_BY答案,布雷克,20160516T0713;编辑20180226T0746