NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Db::query UPDATE SET - zápis datumu z formuláře do tabulky

V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Přemysl Šolc:1.4.2021 14:01

Potřeboval bych poradit s úpravou následujícího funkčního dotazu, který po vyplnění a odeslání formuláře uloží hodnoty do všech sloupců v "table1" a do sloupce "pouzita" do příslušného řádku, kde odpovídá hodnota "cislo_plomby" v "table2" uloží text "Ano".

if ($_POST)
                {
                        $datum = date("Y-m-d H:i:s", strtotime($_POST['datum_lovu']));
                        Db::query('
                                INSERT INTO table1 (datum_lovu, cislo_plomby)
                                VALUES (?, ?)
                        ', $datum, $_POST['cislo_plomby']);

      Db::query('UPDATE table2 SET pouzita = "Ano" WHERE cislo = ?', $_POST["cislo_plomby"]);
                }

Text "Ano" pro zápis do "table2" potřebuji nahradit za hodnotu "datum_lovu" z vyplněného formuláře.

Zkusil jsem: Zkoušel jsem upravit tak to:

Db::query('UPDATE table2 SET pouzita = ?', $_POST['datum_lovu'] 'WHERE cislo = ?', $_POST['cislo_plomby']);

ale provedení dotazu skončí chybou:

#0 syntax error, unexpected WHERE cislo = ? (T_CONSTANT_EN­CAPSED_STRING), expecting ')'

Chci docílit: Text "Ano" pro zápis do "table2" pomoci UPDATE SET potřebuji nahradit za hodnotu "datum_lovu" z vyplněného formuláře.

Prosím o radu jak opravit syntaxi dotazu případně jak změnit dotaz? Díky

 
Odpovědět
1.4.2021 14:01
Avatar
Jan Poláček
Tvůrce
Avatar
Jan Poláček:1.4.2021 14:51

Ahoj, dle mého, pokud používáš wrapper z ITnetworku, tak bych použil rovnou toto:

Db::update("table2",array("pouzita"=>$_POST["datum_lovu"]),"WHERE cislo=?",$_POST["cislo_plomby"]);

UPDATE tedy funguje takto

Db::update("název_tabulky",pole_hodnot_pro_změnu,"podmínka",nepovinně_proměnné_za_otazníky,pokud jsou použity);

Také ho používám :) skoro jsem zapomněl čisté SQL :D

Nahoru Odpovědět
1.4.2021 14:51
Instrukce na adrese 0x77104f29 odkazovala na adresu paměti 0x00000014. S pamětí nelze provést operaci: written.
Avatar
Odpovídá na Jan Poláček
Přemysl Šolc:1.4.2021 18:02

Díky za radu. Už to funguje :-)

 
Nahoru Odpovědět
1.4.2021 18:02
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.