I have some syntax trouble using zend-select,
I get fields and values out of a searchform, I'm using an array which comes out for example like this (everything here ist out of my model):
Because of the fact that the array-parameters (vorname and nachname (mandant will be integer)) are type string, I want to use wildcards in my select, if the fields vorname or/and nachname are filled by the user.
I tried this one to learn how to write it properly, which works:
$select->where(['nachname LIKE ?'=>'%idt%']);
$select->where(['vorname LIKE ?'=>'%tan%']);
To get the string right for using in my select, I uses this quite uncomfortable and besides coming up with an error, code:
foreach ($suche as $key=>$val) {
if (($key=="vorname") && (strlen($suche['vorname'])>0)){
$kritvn = "['" . $key . " LIKE " . chr(63) . " => '%" . $val . "%']";
}
if (($key=='nachname') && (strlen($suche['nachname'])>0)){
$kritnn = "['" . $key . " LIKE ?'=>'%" . $val ."%']";
}
}
In the first one, I played a bit around with the syntax for "?", if I use the next one, I geht the following error;
$kritvn = "['" . $key . " LIKE ?'=>'%" . $val ."%']";
for the right syntax to use near '['vorname LIKE '=>'%%tan%%'])
I tried with the function chr() and before with \?, same problem will be with the "%".
So in the end I have indeed two questions:
What would be the proper technik to reach the result?
If there isn't a better solution, what I don't think, so how should I write it properly?
if $key = 'vorname' and the value is perhaps tan, I would appreciate a where kondition which looks like this one:
$select->where(['vorname LIKE ?'=>'%tan%']);
And perhaps, there ist a better way, the problem occurred because now I wanted wildcards ;-)

The array you can send when using
select->where()Zend will just transform that in to a where statement with equalto'sfor example
becomes the
to use it like you have to use the where objects methods like this
or you can use the sorter version like this where Zend creates the where object for you.