Autor Zpráva
wEprous
Profil
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
Vloz si tu chybovu hlasku do prekladaca a pochopis. Mas chybu v tom sql, mas tam urcite vsetky tie tabulky?
Alphard
Profil
By je rezervované slovo.
wEprous
Profil
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
wEprous:
neošetřuješ vstupy do DB (a nejde o syntaktcké chyby, ale o bezpečnost aplikace). mysql_real_escape_string()
wEprous
Profil
panther:
Díky moc, je to velice užitečné.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: