CodeIgniter未知的SQL错误

时间:2012-08-29 18:14:53

标签: database codeigniter

这是我在db:

中的选择代码
$q = $this->db->like('Autor1' or 'Autor2' or 'Autor3' or 'Autor4', $vyraz)
    ->where('stav', 1)
    ->order_by('id', 'desc')
    ->limit($limit)
    ->offset($offset)
    ->get('knihy');

    return $q->result();

$vyraz = "Zuzana Šidlíková";

错误是:

  

NastalachibabaatabĂzy

     

错误号码:1054

     

'where子句'中的未知列'1'

     

SELECT * FROM (\ knihy`)WHERE`stav` = 1 AND`1` LIKE'%ZuzanaĹidlĂkovĂ%'ORDER BY`id`desc LIMIT 9

     

文件名:C:\ wamp \ www \ artbooks \ system \ database \ DB_driver.php

     

行号:330

你能帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

您尝试做的事情的语法错误,但技术上仍然有效,因为:

'Autor1' or 'Autor2' or 'Autor3' or 'Autor4'

...实际上是一个有效的PHP表达式,其求值为TRUE(因为所有非空字符串都是“真实的”),当转换为字符串或echo时,它出现为{ {1}},因此DB类希望匹配名为“1”的列。

Example:

1

无论如何,这就是你需要的:

function like($arg1, $arg2)
{
    return "WHERE $arg1 LIKE '%$arg2%'";
}

$vyraz = 'Zuzana Šidlíková';
echo like('Autor1' or 'Autor2' or 'Autor3' or 'Autor4', $vyraz);

// Output: WHERE 1 LIKE '%Zuzana Šidlíková%'