Autor Zpráva
Adam501
Profil
Ahoj. Mám problém s insertem. Příkaz používám snad poprvý v životě a ani sem nečekal že to hned půjde.
Takhle vypadá insert:
mysql_query("INSERT INTO `recepty` (nazev, kategorie, suroviny, posutp) VALUES ('".$_GET['nazev']."','".$_GET['kategorie']."','".$_GET['suroviny']."','".$_GET['postup']."')");


Chybu to nyvypisuje, naopak napíše to "Recept byl úspěšně přidán." Přesto v databázi není nový řádek. Nevíte kde se stala chybka?

EDIT: Můžete smazat. Chyba byla v názvu jednoho sloupce.
pcmanik
Profil
Adam501:
Ak ti to vypisovalo "Recept byl úspěšně přidán." aj napriek zlemu nazvu stplca, tak potom mas niekde v kode chybu a nemalo by ti to vypisat nemyslis?
DoubleThink
Profil *
Mimochodem neošetřené externí proměnné v query - za to se už dneska střílí bez soudu.
Adam501
Profil
pcmanik:
Ne. Protože ta hláška nebyla ničím podmíněná. Jakmile to nevypsalo chybu(varování), tak se napíše takhle hláška.

DoubleThink:
Jak se to hlídá?(chápu dobře, že mluvíš o SQL injection?)
pcmanik
Profil
Adam501:
Cize to ukazuje na chybu nemyslis? Ako to moze vypisat ze bolo nieco uspesne pridane, ked to nebolo? To je trocha proti logike.

Ano DoubleThink naraza na SQL injection
DarkMeni
Profil
Adam501:
Jak se to hlídá?
Třeba mysql_real_escape_string.
$nazev = mysql_real_escape_string($_GET['nazev']); //nebo $_POST['nazev']
//...
mysql_query("INSERT INTO... ('".$nazev."',...)") or die("Chyba: ".mysql_error());
//nebo:
$dotaz = mysql_query("INSERT INTO... ('".$nazev."',...)");
if($dotaz){
  echo "V pořádku";
}else{
  echo "Chyba: ".mysql_error();
}
Adam501
Profil
DarkMeni:
Díky.

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:

0