tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

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

Chyba při použití modifikátoru %in v PostgreSQL

před 10 lety

Bernard Williams
Člen | 207

Nazdárek,

při použití modifikátoru %in v PostgreSQL mi dibi háže chybu:

SQL translate error: INSERT INTO "table" (column1, column2) VALUES ('value1', **Unknown or invalid modifier %in**)

Je bug nebo dělám někde chybu?

S poděkováním
Bernard

před 10 lety

David Grudl
Nette Core | 6806

Zkus sem poslat celý kód, jak jej voláš.

před 10 lety

Bernard Williams
Člen | 207
    private $db;

    public function startup() {
        parent::startup();
        $this->db = New DibiConnection(Environment::getConfig('database'));
    }

    public function citatFormSubmitted(AppForm $form) {
        if ($form->isSubmitted()) {
            try {
        $value = $form->getValues();
                $this->db->query('INSERT INTO [sntc_citaty] (citat, autor_id) VALUES (%s, %in)', $value['citat'], $value['autor']);
...
            } catch (DibiException $e) {
...
            }
        }
    }

Pokud vstupní parametry ošetřím a změním modifikátor, tak už to vše šlape.

$this->db->query('INSERT INTO [sntc_citaty] (citat, autor_id) VALUES (%s, %i)', $value['citat'], (empty($value['autor']) ? NULL : $value['autor']));

Editoval Bernard Williams (23. 7. 2009 11:57)

před 10 lety

David Grudl
Nette Core | 6806

Nejsem schopen tu chybu dohledat. Můžeš zkusit ještě dumpnout $value['autor']?

před 10 lety

Bernard Williams
Člen | 207

debug::dump($value['autor']);

Výstup, pokud autora vyberu: string(3) "178"

A výstup, pokud jej nevyberu: string(1) "0"

Nepomáhá ani přetypování: (int)$value['autor']. Nemůže být prostě chyba v driveru pro PostgreSQL? Funguje vůbec někomu ten modifikátor %in v PostgreSQL?