Autor Zpráva
shooow
Profil
Error: 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 '

Nědokáži chybu identifikovat, počítám že formulář ad. kód je zbytečný postovat.

if(isset($_GET["akce"]) && ($_GET["akce"] == "edit")) {

$updn = "UPDATE novinky SET perex = ".$_POST["perex"].", obsah = ".$_POST["obsah"]." WHERE id = ".$_GET["id"]." ";
mysql_real_escape_string($updn);

if (!mysql_query($updn))
{
die('Error: ' . mysql_error());
}
echo "<meta http-equiv='refresh' content='1;url=./admin.php'>\n";
}

$sql = mysql_query("SELECT * FROM novinky WHERE id = ".$_GET["id"]."");
while($vypis = mysql_fetch_array($sql)){
$nazev = $vypis['nazev'];
$datum = date("d.m.Y H:i:s", $vypis['datum']);
$autor = $vypis['autor'];
$perex = $vypis['perex'];
$obsah = $vypis['obsah'];
}
Tori
Profil
1. V SQL dotazu chybí uvozovky nebo apostrofy okolo vkládaných řetězců.
2. Escapovat se musí jednotlivé ukládané řetězce zvlášť, nikoli celý SQL dotaz.
3. U výpisu chybí ochrana před SQL injection (intval nebo přetypování $_GET['id'] na číslo).
shooow
Profil
Tzn. že úprava viz. kód řeší problém ? Nebo kde je chyba v úpravě ? -> chyb. hláška stále stejná

if(isset($_GET["akce"]) && ($_GET["akce"] == "edit")) {
$updn = "UPDATE novinky SET perex = ".$_POST["perex"].", obsah = ".$_POST["obsah"]." WHERE id = ".$id." ";
mysql_real_escape_string($perex);
mysql_real_escape_string($obsah);
mysql_real_escape_string($id);

if (!mysql_query($updn))
{
die('Error: ' . mysql_error());
}
echo "<meta http-equiv='refresh' content='1;url=./admin.php'>\n";
}
Kajman
Profil
$updn = "UPDATE novinky SET perex = '".mysql_real_escape_string($_POST["perex"])."', obsah = '".mysql_real_escape_string($_POST["obsah"])."' WHERE id = ".(int)$id;
peta
Profil
Proc nepouzijes sprint_f? Zjednodusilo by ti to praci.
$query = "UPDATE novinky SET perex = '%s', obsah = '%s' WHERE id = %s"; // Retezce se musi uzavirat do apostrofu, ze jo? Proc to nedelas... perex = ???".$_POST["perex"]."???
$query = sprint_f($query,
  mysql_real_escape_string($_POST["perex"]),
  mysql_real_escape_string($_POST["obsah"]),
  (int)$id);
echo '<pre>'.$query.'</pre>'; // abys videl, co jsi vyplodil a kdyz ten prikaz nepujde spustit v phpmyadminovi, tak pravdepodobne ani ve tvem php programu.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0