【发布时间】:2020-03-17 10:31:20
【问题描述】:
我在使用 zend-select 时遇到了一些语法问题,
我从搜索表单中获取字段和值,我正在使用这样的数组(这里的所有内容都来自我的模型):
由于数组参数(vorname 和 nachname(mandant 将是整数))是字符串类型,如果字段 vorname 或/和 nachname 由用户填写,我想在我的选择中使用通配符。
我尝试了这个来学习如何正确编写它,它有效:
$select->where(['nachname LIKE ?'=>'%idt%']);
$select->where(['vorname LIKE ?'=>'%tan%']);
为了在我的选择中正确使用字符串,我使用这个非常不舒服,除了出现错误之外,代码:
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 ."%']";
}
}
在第一个中,我玩了一下“?”的语法,如果我使用下一个,我会收到以下错误;
$kritvn = "['" . $key . " LIKE ?'=>'%" . $val ."%']";
在 '['vorname LIKE '=>'%%tan%%']) 附近使用正确的语法
我尝试使用函数 chr(),之前使用 \?,同样的问题也会出现在 "%" 上。
所以最后我确实有两个问题:
达到结果的适当技术是什么?
如果没有更好的解决方案,我认为没有,那我应该怎么写呢?
如果 $key = 'vorname' 并且值可能是棕褐色,我会很感激一个看起来像这样的 where kondition:
$select->where(['vorname LIKE ?'=>'%tan%']);
也许,有更好的方法,出现问题是因为现在我想要通配符 ;-)
【问题讨论】: