Oznámení
Omlouváme se, provoz fóra byl ukončen
Zpětné uvozovky v podmínce
Upozornění: Tohle vlákno je hodně staré.
- Paimutan
- Člen | 33
Ahojte,
mám problém s tím, že dibi automaticky vkládá zpětné uvozovky do následujícího dotazu:
volání funkce s dotazem:
$user = $this->userModel->getUsers(
array('LOWER( u.email )' => strtolower('nejaky@Email.cz'))
);
metoda provádějící dotaz (resp. její důležitá část)
public function getUsers($where, ...)
{
...
return $this->db->query(
'SELECT ... from [uzivatel] u ',
'%if', isset($where), 'WHERE %and', isset($where) ? $where : array(), '%end',
'%if', isset($order), 'ORDER BY %by', $order, '%end',
'%if', isset($limit), 'LIMIT %i %end', $limit,
'%if', isset($offset), 'OFFSET %i %end', $offset
)->fetchAll();
A teď ten problém. Dibi ze zadaného vygeneruje tento dotaz:
SELECT
...
FROM `uzivatel` u
WHERE (`LOWER( u`.`email )` = 'nejaky@Email.cz')
tedy obalí údaje z WHERE těmi zpětnými uvozovkami, z čehož v tomto případě vznikne syntax error. Jak se toho zbavit? Potřebuju na ten sloupec ve WHERE aplikovat funkci LOWER a nenašel jsem řešení, jak toho docílit.
Díky za jakékoliv nasměrování
- Milo
- Nette Core | 1119
$user = $this->userModel->getUsers(array(
array('LOWER([u.email]) = %s', 'nejaky@Email.cz')
));
Komentáře
funguje parádně, díky :)
před 5 lety- Tharos
- Člen | 1042
Nefungovalo by tohle?
$user = $this->userModel->getUsers(
array('LOWER(`u`.`email`)%sql' => strtolower('nejaky@Email.cz'))
);
Komentáře
Díky za tip, ale bohužel z toho vyleze toto:
...
WHERE (`LOWER(``u```.```email``)` = nejaky@Email.cz)
před 5 lety