Autor | Zpráva | ||
---|---|---|---|
Prey Profil |
Ahoj.
Chtěl bych Vás poprosit o radu. Neběží mi následující SQL dotaz a vážně nevím v čem je problém (určitě nějaká prkotina...). Je stejný problém pro obě varianty parametru action. Po vyplnění formuláře se vypíše chyba "Unknown column 'XXX' in 'field list'", kde XXX=hodnota vyplněná ve druhém poli formuláře, tedy proměnná "mesto". Komentář: 1) Volba "pridat" by měla přidat nový údaj do tabulky 2) Volba "upravit" by měla upravit původní údaj Budu vděčný za radu. <?php switch ($_GET['action']) { case 'pridat': { $query = 'INSERT INTO tabulka (jmeno, mesto) VALUES ("' . $_POST['jmeno'] . '", ' . $_POST['mesto'] . ')'; } break; case 'upravit': { $query = 'UPDATE tabulka SET jmeno = "' . $_POST['jmeno'] . '", mesto = ' . $_POST['mesto'] . ' WHERE id = ' . $_POST['id']; break; } break; } if (isset($query)) { $result = mysqli_query($db, $query) or die(mysqli_error($db)); } ?> Moderátor Majkl578: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na ).
|
||
Tori Profil |
#2 · Zasláno: 3. 10. 2011, 00:08:22 · Upravil/a: Tori
1. Data z formuláře je potřeba kvůli bezpečnosti ošetřit před uložením do databáze. (pro řetězce je např. funkce mysqli_real_escape_string, pro čísla intval nebo floatval).
2. Řetězce v SQL dotazu musí být v uvozovkách nebo apostrofech (to je příčina té chyby). edit: opraven odkaz na mysqli_real_esc.. |
||
Prey Profil |
#3 · Zasláno: 3. 10. 2011, 00:38:33
Tori:
Díky za rady. ad1) Dám si na to pozor. ad2) Čekal jsem, že bude někde něco přebývat či chybět. Ať už ale doplňuju uvozovky kamkoliv, tak mi to nechce schroustat. Neporadil bys prosím přesněji, jak upravit? Promiň...začátečník... |
||
Tori Profil |
#4 · Zasláno: 3. 10. 2011, 00:51:42
// ... case 'upravit': $query = 'UPDATE tabulka SET jmeno = "' . mysqli_real_escape_string($db, $_POST['jmeno']) . '", mesto = "' . mysqli_real_escape_string($db, $_POST['mesto']) . '" WHERE id = ' . intval($_POST['id']); break; Mimochodem nemusíte používat složené závorky za case - anebo je alespoň pište pokaždé stejně (jednou máte break v závorkách, podruhé ne). To sice není chyba, ale když budete psát a odsazovat kód jednotným stylem, tak bude i pro vás čitelnější. |
||
Prey Profil |
#5 · Zasláno: 3. 10. 2011, 02:05:48
Tori:
Bezva, už to funguje. Děkuji mockrát!!! |
||
Časová prodleva: 13 let
|
0