Autor | Zpráva | ||
---|---|---|---|
wEprous Profil |
#1 · Zasláno: 8. 3. 2011, 01:13:33
Zdravím, mám menší problém a nemůžu přijít stále na řešení. Dělám si jednoduché administrátorské rozhraní a teď se zabývám editováním obsahu databáze pomoci funkce UPDATE.
Kód vypadá takto: <?php require "../connect.php"; $id = $_GET['id']; $sql = MySQL_Query("SELECT * FROM clanky WHERE ID = '$id'"); $radek = MySQL_Fetch_Array($sql); ?> <center> <?php echo "<form ACTION=\"edit.php?id=".$id."\" METHOD=\"POST\">" ?> <table CELLSPACING="0" CELLPADDING="2" > <tr><td>Name:<td><input TYPE="text" NAME="name" SIZE="28" STYLE="border: 1px solid black;" VALUE="<?php echo $radek['name'] ?>"></td> <tr><td>Date:<td><input TYPE="text" NAME="date" SIZE="28" STYLE="border: 1px solid black;" VALUE="<?php echo $radek['date'] ?>"> </td> <tr><td>By:<td><input TYPE="text" NAME="by" SIZE="28" STYLE="border: 1px solid black;" VALUE="<?php echo $radek['by'] ?>"> </td> <tr ><td colspan="2"><textarea ROWS="5" COLS="70" NAME="txt" STYLE="border: 1px solid black;"><?php echo $radek['txt'] ?></textarea></td></tr> <tr><td><input TYPE="submit" VALUE="Uložit změny" name="edit" STYLE="border: 1px solid black;"></td></tr> </table> </form> <hr><br><br> </center> <?php $name = $_POST['name']; $date = $_POST['date']; $by = $_POST['by']; $txt = $_POST['txt']; if (isset($_POST['edit'])) { $edit = MySQL_Query("UPDATE clanky SET name = '$name', date = '$date', by = '$by', txt = '$txt' WHERE id = '$id' "); if(!$edit): echo mysql_error(); else: echo "Zpráva byla upravena."; endif; mysql_close(); } ?> Mysql_error(); vypisuje "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'by = 'weprous', txt = 'Lorem ipsum' WHERE id = '4'' at line 1" - podle článků, který je zvolen. Doufám, že někdo uvidí řešení tohoto problému. Díky za každou odpověď. BTW: V programování PHP se pohybuji jen zhruba týden, ne všechny chyby vidím hned. |
||
pcmanik Profil |
#2 · Zasláno: 8. 3. 2011, 06:22:38
Vloz si tu chybovu hlasku do prekladaca a pochopis. Mas chybu v tom sql, mas tam urcite vsetky tie tabulky?
|
||
Alphard Profil |
#3 · Zasláno: 8. 3. 2011, 07:06:43
By je rezervované slovo.
|
||
wEprous Profil |
#4 · Zasláno: 8. 3. 2011, 14:13:43
pcmanik:
Anglicky umím, jen se v tom neorientuji. Alphard: Díky, pomohlo to. Teď už mě jen trápí, že když se používají apostrofy a uvozovky, tak to vyhodí chybu. Vím, že se tomu dá vyhnout pokud bych v textarea psal před apostrofy a uvozovky toto lomítko \, ale při větším textu, kde by se vyskytla gramatická chyba nebo podobně, tak se všechny lomítka musí psát znova. Neexistuje nějaká funkce, které by tohle řešila? |
||
panther Profil |
#5 · Zasláno: 8. 3. 2011, 14:18:05
wEprous:
neošetřuješ vstupy do DB (a nejde o syntaktcké chyby, ale o bezpečnost aplikace). mysql_real_escape_string() |
||
wEprous Profil |
#6 · Zasláno: 8. 3. 2011, 17:22:22
panther:
Díky moc, je to velice užitečné. |
||
Časová prodleva: 13 let
|
0