NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: update databáze, nefunkční skript

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

Aktivity
Avatar
Mario Brunmayr:15.5.2017 3:07

Ahoj, mám tento kod pro aktulizování dat v databázi.

                  public function recepce ($produkt)
{
                      echo $produkt;

                $hodnota = array(
                      'stav' => '3',

              );
                                $parametry = array(
                      'id' => $produkt,

              );
              try
              {
              Db::zmen('objednavka', $hodnota, 'WHERE', $parametry);

              }

              catch (PDOException $chyba)
              {
                      throw new ChybaUzivatele('chyba DB');
              }
}

V databázi sloupec pole a stav existuje, a data aktulizuji pomocí místního databázového wraperu.

public static function zmen($tabulka, $hodnoty = array(), $podminka, $parametry = array()) {
        return self::dotaz("UPDATE `$tabulka` SET `".
        implode('` = ?, `', array_keys($hodnoty)).
        "` = ? " . $podminka,
        array_merge(array_values($hodnoty), $parametry));
}

Chybovou hlášku mi to vypisuje:

Fatal error: Uncaught ChybaUzivatele: chyba DB in /home/users/spokus9ecz/spokus.9e.cz/web/modely/SpravaUzivatelu.php:150 Stack trace: #0 /home/users/spokus9ecz/spokus.9e.cz/web/kontrolery/ObjednavkarecepceKontroler.php(32): SpravaUzivatelu->recepce('8') #1 /home/users/spokus9ecz/spokus.9e.cz/web/kontrolery/SmerovacKontroler.php(47): ObjednavkarecepceKontroler->zpracuj(Array) #2 /home/users/spokus9ecz/spokus.9e.cz/web/index.php(22): SmerovacKontroler->zpracuj(Array) #3 {main} thrown in /home/users/spokus9ecz/spokus.9e.cz/web/modely/SpravaUzivatelu.php on line 150

Takže jestli jsem ji dobře pochopil tak se nepovede provést funkci zmen.

 
Odpovědět
15.5.2017 3:07
Avatar
Mario Brunmayr:15.5.2017 3:37

Vyřešeno, mátlo mě že poslední parametr má být pole a pořád jsem tam snažil něco nacpat :-D Konečný script má tuto podobu.

                  public function recepce ($produkt)
{
                      echo $produkt;

                $hodnota = array(
                      'stav' => '3',

              );
                                $parametry = array(
                      'id' => $produkt,

              );
              try
              {
              Db::zmen('objednavka', array('stav' => '3'), 'WHERE id = ?', array($produkt));

              }

              catch (PDOException $chyba)
              {
                      throw new ChybaUzivatele('chyba DB');
              }
}
 
Nahoru Odpovědět
15.5.2017 3:37
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 2 zpráv z 2.