Workshop FORPSI Cloud rozptýlí vaše obavy z použití cloudu
Zobrazují se odpovědi 1 až 17 z 17

Dibi dotaz, kde je název sloupce order?

  1. Ahoj,

    převzal jsem projekt po jednom praseti a přišel jsem na to, že pojmenoval sloupec v tabulce "order". Potřebuji rychle něco upravit, než to přepíšu celé. Jsou tam DIBI dotazy.

    Jak mohu vytvořit INSERT INTO, kde mám hodnoty
    $values = array('order' => 1234, 'count' => 1, 'title' => 'Titulek');

    Zkoušel jsem několik variant apostrofů a hranatých závorek, apod., ale nebere mi to...

    Na SELECT mi funguje tohle:

    return dibi::fetchAll('SELECT * FROM orders_items WHERE [order] = %i', $id);

  2. Co se právě děje na Webtrhu?
  3. a pouzit: ` ?

  4. Zkoušel jsem

    "`order`" => 1234
    '`order`' => 1234
    `order` => 1234

    a bohužel nic.

  5. To podle mě dibi nezvládne, protože toto neumí parsnout. Doporučují použít na to normální mysqli dotaz

  6. Tomu joudovi to ale muselo nějak fungovat. On tam má příkazy typu:

    dibi::insert('orders_items', $item)->execute();

    a v $item má přesně obyčejné pole, jako jsem uvedl já v příkazu. Ale můj dotaz to nechroupne...

  7. Můžeš sem hodit ten tvůj kód, který ti to nechroupe ?

  8. Dělal jsem úplně primitivní pokusy:

    Kód:
    dibi::query('INSERT INTO orders_items', [
        'order' => 31909,
        'title' => 'pokus'
    ]);
    
    dibi::query('INSERT INTO orders_items (`order`, `title`) VALUES (31909, "pokus")');
    
    $item = array(
        'order' => 31909,
        'title' => 'pokus'
    );
    dibi::insert('orders_items', $item)->execute();
    atpod.

  9. A co vypíše?
    Kód:
    dibi::test('INSERT INTO orders_items ([order], [title]) VALUES (31909, "pokus")');
    Jakou konkrétně chybu to vrací? To by mělo projít bez problémů.

  10. Pokud ti nejde ani ten poslední případ, tzn. stejná konstrukce jako fungující případ, jak si psal, tak bych se možná podíval na DB.

    Obsahuje sloupce order a title? Klíče v tabulce jsou také v pořádku?

    Nějaká chyba, když se to neprovede?

  11. Já v těch zápisech taky nevidím žádný problém. Nevyhodí ti to spíš nějakou výjimku?

    Místo query() zavolej test() a hoď sem výsledný dotaz, který dibi složí. Případně si ho zkus spustit přes phpmyadmin (či co používáš)

  12. a SQL příkaz se neprovede ani když ho vložíš do phpmyadmin / admineru ?

  13. Myslel jsem na to, zda nebude problém klíčů, apod.

    Proto jsem udělal:

    Kód:
    try {
    dibi::test('INSERT INTO orders_items ([order], [title]) VALUES (31909, "pokus")');
        dibi::query('INSERT INTO orders_items ([order], [title]) VALUES (31909, "pokus")');
    } catch (DibiException $e) {
        echo 'Chybička: ' . $e->getMessage();
    }
    Žádnou chybu to nevyhodí. Když zkopčím ten příkaz, který mi vrátí metoda test() a hodím to přímo do databáze jako SQL příkaz, provede se bez problému. Žádný problém s relací, apod. to nehází.

    Je přeci divné, aby nedokázalo zapsat dibi, když to projde přes SQL příkaz přímo v PHPmyAdmin.

  14. Ten dotaz je v pořádku a dle mého by se měl provést. Je to divné, nemáš tam spuštěnou transakci a provedenej rollback?

  15. Budu muset po tomhle zapatrat. Asi tam neco takovyho bude. S dibi moc nedelam, ale ono to bude vsude stejny.

  16. Tohle je jediný kód, který máš v tom testovacím PHP souboru? Tzn. include dibi, inicializace dibi a příkazy?

  17. Citace Původně odeslal kenod Zobrazit příspěvek
    Tohle je jediný kód, který máš v tom testovacím PHP souboru? Tzn. include dibi, inicializace dibi a příkazy?
    Kdepak, je to celá třída Order. Je tam toho mraky.

  18. Děkuji moc všem, co přispěli svým tipem a radou. Opravdu tam někde běžela transakce. Zdá se, že vyřešeno...

Hostujeme u Server powered by TELE3