mySQL insert form probléma
Üdv mindenkinek!
Abban szeretném a segítségetek kérni, hogy készítek egy from-t phpben, ami egy mySQL adabázishoz ad hozzá értékeket, amelyeket a felhasználó visz be.
Az adatbázis kapcsolat csodálatosan létrejön, a kód azt írja hogy sikeres a rögzítés, mégsem találom a bevitt adatokat az adatbázisban.
A kódrészelet, ami bevitelt végezné:Válaszaitokat előre is köszönöm.
■ Abban szeretném a segítségetek kérni, hogy készítek egy from-t phpben, ami egy mySQL adabázishoz ad hozzá értékeket, amelyeket a felhasználó visz be.
Az adatbázis kapcsolat csodálatosan létrejön, a kód azt írja hogy sikeres a rögzítés, mégsem találom a bevitt adatokat az adatbázisban.
A kódrészelet, ami bevitelt végezné:
$tipus = $_POST["tipus"];
$modell = $_POST["modell"];
$evjarat = $_POST["evjarat"];
mysql_query("INSERT INTO 'autok' (tipus, modell, evjarat) VALUES ('$tipus', '$modell', '$evjarat')");
echo "Sikeres rögzítés!";
Több info
Kellene a tábla definíciója, hogy van-e valamilyen kényszer (constraint) az autok táblán legalább.
Az hogy sikeres rögzítés mindíg ki fogja írni, még akkor is ha nem is sikerült (kivéve persze ha a PHP úgy van beállítva, hogy kezelje végzetes hibaként a sikertelen adatbázisműveletet). Semmilyen ellenőrzést nem csinálsz! Próbáld talán így:
aposztrof
még nem
Tábla definícióban semmi különleges, a tipus és modell tinytext az évjárta pedig int. Vagy ha másra gondoltál, akkor bocsi kezdő vagyok és nem értettem a kérdést.
nézd végig hol akadsz el
Maga az sql kérés formailag helyes.
Nézd meg echo-zással hogy a _POST-ból kapsz-e eredményeket.
Mivel az sql jó, próbáld azt kiechozni, mysql_query helyett egy echot írsz oda, és azt a sort másold be egy sql konzolba vagy a phpmyadmin sql ablakába, akkor ha hiba van, egyből látni fogod.
Kiírja sikeres rögzítést mindenképp, mert az sql parancsnak nincs visszatérési értéke, és nincs lekezelve.
Inkább így próbáld:
huh
Echoval kiirattam a POST átvett értékeit, azok helyesek.
Echoval kiirattam a rögzítést, bemásoltam sql konzolba és nem írt ki hibaüzenetet, de nem is adta hozzá az adatot. Kipróbáltam mindhárom módszerrel (autok 'autok' `autok`) úgy sem sikerült.
Az baj lehet, hogy Navicat-t használok sql megjelenítésre?
Próbáld meg mással is
A Navicat-ben tuti, hogy jó helyen keresed a hibaüzenetet? Nem fog feldobni neked semmilyen ablakot/üzenetet ha hibás az SQL-ed, ne is számíts rá (AFAIK). Ellenben van erre DB output ablak.
phpmyadmi
Mi lehet a hiba? Reinstall? Tudom ez már kicsit off, mégis kérném a segítségeteket.
Köszönöm.
siker
Végülis rájöttem, 2 hibát vétettem és ezért nem ment, hiába javítottam az egyiket!
SQL konzolban írtam be:
Köszönöm még egyszer! És bocsánat ha túl kezdő vagyok ;)
Megmondtam
OFF- inject..
$modell = $_POST["modell"];
$evjarat = $_POST["evjarat"];
1. a fenti kódnak nincs semmi haszna.
2. nézz utána az escapelésnek és a bemeneti adatok védelmének.
3. a sikeres rögzítést akkor írd ki ha valóban sikeres volt a rögzítés, különben elég megtévesztő :)
4. a táblaneveket ` (ctrl+7) jelek közé szokás rakni, mint a mezőneveket. a ' jel a bemeneti string adatok segédjele.