0

これが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á";

エラーは次のとおりです。

Nastala chyba データ編集

エラー番号: 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

この問題を解決するのを手伝ってもらえますか?

4

1 に答える 1

1

あなたの構文はあなたがやろうとしていることに対して間違っていますが、技術的には有効です。

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

...実際には有効な PHP 式であり、TRUE(空でない文字列はすべて「真実」であるため) と評価され、文字列またはechoed にキャストすると として出力される1ため、DB クラスは「」という列で一致するように見えます。 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á%'

とにかく、必要なものは次のとおりです。

$q = $this->db
    ->like('Autor1', $vyraz)
    ->or_like('Autor2', $vyraz)
    ->or_like('Autor3', $vyraz)
    ->or_like('Autor4', $vyraz)
    ->where('stav', 1)
    ->order_by('id', 'desc')
    ->limit($limit)
    ->offset($offset)
    ->get('knihy');
于 2012-08-29T18:18:41.607 に答える