tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

Změna operátoru když ve WHERE používám pole

před 9 lety

Morfeo21
Backer | 35

Zdravím Dibi Guru, mám problém, se kterým si nevím rady. Nebo minimálně mě nenapadá žádné jednoduché řešení.
Mám dotaz:

<?php
return dibi::query('SELECT * FROM tabulka',
        '%if', isset($where), 'WHERE %and', isset($where) ? $where : array(), '%end', ... );
?>

V proměnné $where je pole, ale pro některé položky z toho pole bych potřeboval změnit operátor z = na LIKE. Jde to řešit nějak? :)

Díky za pomoc!

Editoval Morfeo21 (21. 1. 2011 15:44)

před 9 lety

matata
Backer | 672

Dej ukazku vstupního pole, což chápu že asi je obyčejné pole. A dej ukázky 2 nebo 3 výstupního pole.

před 9 lety

Milo
Nette Core | 1119
$and = array();
$and[] = array( '%b', true );
foreach( $where AS $colName => $colVal )
{
    if( ??? )
    {
        $and[] = array( '%n LIKE %~like~', $colName, $colVal );
    }
    else
    {
        $and[] = array( '%n = %s', $colName, $colVal );
    }
}

return dibi::query( 'SELECT * FROM tabulka WHERE %and', $and );

před 9 lety

matata
Backer | 672

Ahoj,

tak co vidím, jinak to asi nepůjde, jak to teď máš.

Přemýšlel jsem zda ti pomůží složitější výrazy ale myslím že to není to co hledáš? Mrkni se a vyzkoušej :)

Editoval matata (22. 1. 2011 16:36)