0

検索フォームに対して次のクエリがあります。

// General Query
$conditions = array(
    'editore LIKE' => "%$e%",
    'titolo LIKE' => "%$t%"
);

ここで、ユーザーがフィールド(作成者、年など)に入力することを選択した場合、次のようになります。

if (isset($menu)&&$menu!='')
    $conditions[]=array('classe LIKE' => "%$menu%");

または:

if ($anno&&$anno2)
    $conditions[] = array('anno BETWEEN ? AND ?' => array($anno,$anno2));

ユーザーが本にいくつかのタグを選択した場合、私は次のようになります。

$query_t = $CdBibliotem->query("SELECT codiceBiblio FROM cd_bibliotem WHERE codiceTematica IN (".implode(',', $fields).")");        
$query_t = Set::classicExtract($query_t,'{n}.cd_bibliotem.codiceBiblio'); 
$tot=implode(',', $query_t);
$conditions[]=array('codiceBiblio IN (?)'=> "$tot");

これは機能するはずですが、代わりに理由がわかりません。最初のレコードしか表示されません。

これは、ユーザーが1つのタグのみを選択し、他のフィールドを空のままにする最終クエリのデバッグの例です。

Array (
[editore LIKE] => %%
[titolo LIKE] => %%
[0] => Array
    (
        [autori LIKE] => %%
    )

[1] => Array
    (
        [codiceBiblio IN (?)] => 118729,118656,118645,118554,118534,118533,118532,118531,118530,118529,118528,118527,118526,118121,117632,117515,117040,116562,115851,115787,114613,114612,113545,113385,113142
    ) )

この場合、最初の本(id = 118729)のすべての詳細が表示されますが、そのすべての本の詳細が表示されるはずです。

4

0 に答える 0