我试图建立一个动态查询,但是我遇到一个错误,告诉我参数计数不合适,一切似乎对我来说还有4个参数。
$activeFilters
array(1) {
["zlec_addres"]=>
string(2) "Sz"
["zlec_nr"]=>
string(3) "OPC"
}
function cond_gen(array $activeFilters)
{
$query_var = [];
$i=0;
foreach ($activeFilters as $key => $value) {
$query_var[] = '`'.array_keys($activeFilters)[$i].'` LIKE concat("%",:condition'.$i.',"%")';
$i++;
}
return 'WHERE ' . implode('AND', $query_var);
}
$conditions = cond_gen($activeFilters);
//eqb
$db->bindMore($activeFilters);
$db->bind("start",$start);
$db->bind("pagesize",$pagesize);
$dynQuery = $db->query("SELECT zlec_status.nazwa AS Status,
piorytet.nazwa AS Priorytet,
Concat(koord.imie, ' ', koord.nazwisko) AS `Koordynator`,
Concat(zlec_adresy.miasto, ' - ', zlec_adresy.ulica, ' ',
zlec_adresy.oddzial)
AS `adres`,
zlec_z_dnia,zlec_id,
zlec_nr,
zlec_do,
zlec_ogran,
awizacje,
awizacja_na_dzien,
termin_zamkniecia,
tresc,
uwagi
FROM zlec
INNER JOIN koord
ON zlec.koord = koord.id
INNER JOIN zlec_adresy
ON zlec.zlec_addres = zlec_adresy.id
INNER JOIN piorytet
ON zlec.priorytet = piorytet.id
INNER JOIN zlec_status
ON zlec.status_zlecenia = zlec_status.id
$conditions
LIMIT :start, :pagesize");
SQL错误未处理的异常。
SQLSTATE [HY093]:参数号无效
WHERE `zlec_addres` LIKE concat("%",:condition0,"%")AND`zlec_nr` LIKE concat("%",:condition1,"%")
LIMIT :start, :pagesize
答案 0 :(得分:0)
为我工作的代码
function cond_gen(array $activeFilters)
{
$query_var = [];
$i=0;
foreach ($activeFilters as $key => $value) {
$query_var[] = '`'.array_keys($activeFilters)[$i].'` LIKE concat(\'%\',:'.array_keys($activeFilters)[$i].',\'%\')';
$i++;
}
return 'WHERE ' . implode(' AND ', $query_var);
}
$conditions = cond_gen($activeFilters);
echo cond_gen($activeFilters);
//eqb
var_dump($activeFilters);
$db->bindMore($activeFilters);
$db->bind("start",$start);
$db->bind("pagesize",$pagesize);
$dynQuery = $db->query("SELECT zlec_status.nazwa AS Status,
piorytet.nazwa AS Priorytet,
Concat(koord.imie, ' ', koord.nazwisko) AS `Koordynator`,
Concat(zlec_adresy.miasto, ' - ', zlec_adresy.ulica, ' ',
zlec_adresy.oddzial)
AS `adres`,
zlec_z_dnia,zlec_id,
zlec_nr,
zlec_do,
zlec_ogran,
awizacje,
awizacja_na_dzien,
termin_zamkniecia,
tresc,
uwagi
FROM zlec
INNER JOIN koord
ON zlec.koord = koord.id
INNER JOIN zlec_adresy
ON zlec.zlec_addres = zlec_adresy.id
INNER JOIN piorytet
ON zlec.priorytet = piorytet.id
INNER JOIN zlec_status
ON zlec.status_zlecenia = zlec_status.id
$conditions
LIMIT :start, :pagesize");