0
function get_result_professions($key_word)  
{  
    $sql = "SELECT users.name FROM users 
            inner join users_has_professions  on users_has_professions.users_id  = users.id 
            inner join professions on users_has_professions.professions_id  = professions.id  
            where professions.key_word = ?  ";


    return   $this->db->get()->query($sql, $key_word);
} 

当我执行此代码时,我收到以下错误:

A Database Error Occurred

Error Number: 1096

No tables used

SELECT *

Filename: /var/www/expertt/models/search_model.php

Line Number: 31

我怎么解决这个问题?提前致谢。

4

2 回答 2

0

$this->db->get()必须包含表名。在您的情况下,您想将其删除,因为您有一个自定义查询,因此您的函数将如下所示:

function get_result_professions($key_word)  
{  
    $sql = "SELECT users.name FROM users 
            inner join users_has_professions  on users_has_professions.users_id  = users.id 
            inner join professions on users_has_professions.professions_id  = professions.id  
            where professions.key_word = '$key_word'  ";


    return   $this->db->query($sql);
} 
于 2013-05-23T12:01:08.480 回答
0

CodeIgniter 的活动记录中的$this->db->get()方法在用于查询表时需要一个表名参数(有关详细信息,请参阅活动记录文档),除非您之前使用其他提供的方法之一构建了查询。

通常在建立连接时,你会使用 Active Record 提供的 select/join 方法,就像这样

$this->db->select('users.name')->from('users')
    ->join('users_has_professions', 'users_has_professions.users_id  = users.id')
    ->join('professions', 'users_has_professions.professions_id  = professions.id')
    ->where('professions.key_word', $key_word); 

(未经测试,因为我没有你的数据库来运行它)

然后,您可以使用该$this->db->get()方法来检索结果,如下所示

$results = $this->db->get();
foreach($query->result() as $row) {
    //code here
}
于 2013-05-23T12:01:24.000 回答