tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

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

Nefunkční regulární výraz

před 9 lety

one-two
Člen | 80

Zdravim,
dibi mi normálně v nette funguje, co ale nejsem schopnej dát dohromady je REGEXP. Zkoušel sem toto, ale laděnka hlásí chybu v syntaxy

<?php
public function abcd($letter) {
        return dibi::query("SELECT [first_name], [last_name] FROM [lecturer] WHERE [last_name] REGEXP '^%s'", $letter);
    }
?>

netuší někdo co s tím? pokud zadám míst %s ručně písmeno tak to funguje.

před 9 lety

Milo
Nette Core | 1119

To je podobný problém jako s LIKE (najdeš na fóru). To co jsi psal se přeloží cca takto:

$letter = 'xxx';
"[last_name] REGEXP '^%s'", $letter
// `last_name` REGEXP '^'xxx''

Nejjednudušší je udělat to takto:

$letter = "'^" . mysql_escape_string( $letter ) . "'";
"[last_name] REGEXP %sql", $letter
// `last_name` REGEXP '^xxx'

před 9 lety

blacksun
Člen | 181

A co třeba spíš

<?php
public function abcd($letter) {
  $letter = '^' . $letter;
  return dibi::query("SELECT [first_name], [last_name] FROM [lecturer] WHERE [last_name] REGEXP %s", $letter);
}
?>