| 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: 15 let
|
|||
0