Beillesztés adatbázisba hiba?
Az alábbi kóddal szeretnék beilleszteni egy sort az adatbázisomba, ugyanakkor mintha nem futna le. Ti láttok benne hibát?
mysqli_query($con,"INSERT INTO items (name, main_type, place, min_damage, max_damage, defense, guardian, samurai, monk, assasin, swashbuckler, bard, cleric, druid, kannagi, sorcerer, summoner, enchanter, owner, type, lvl, opt1_type, opt1_ertek, opt2_type, opt2_ertek, opt3_type, opt3_ertek, opt4_type, opt4_ertek, opt5_type, opt5_ertek) VALUES (".$i1.", ".$i2.", ".$i3.", ".$i4.", ".$i5.", ".$i6.", ".$i7.", ".$i8.", ".$i9.", ".$i10.", ".$i11.", ".$i12.", ".$i13.", ".$i14.", ".$i15.", ".$i16.", ".$i17.", ".$i18.", ".$i19.", ".$i20.", ".$i21.", ".$i22.", ".$i23.", ".$i24.", ".$i25.", ".$i26.", ".$i27.", ".$i28.", ".$i29.", ".$i30.", ".$i31.")");
#2 nem érted.
"INSERT INTO items (name, main_type, place, min_damage, max_damage, defense, guardian, samurai, monk, assasin, swashbuckler, bard, cleric, druid, kannagi, sorcerer, summoner, enchanter, owner, type, lvl, opt1_type, opt1_ertek, opt2_type, opt2_ertek, opt3_type, opt3_ertek, opt4_type, opt4_ertek, opt5_type, opt5_ertek) VALUES (".$i1.", ".$i2.", ".$i3.", ".$i4.", ".$i5.", ".$i6.", ".$i7.", ".$i8.", ".$i9.", ".$i10.", ".$i11.", ".$i12.", ".$i13.", ".$i14.", ".$i15.", ".$i16.", ".$i17.", ".$i18.", ".$i19.", ".$i20.", ".$i21.", ".$i22.", ".$i23.", ".$i24.", ".$i25.", ".$i26.", ".$i27.", ".$i28.", ".$i29.", ".$i30.", ".$i31.")"
Ezt echózd ki, aztán fogd meg a szöveget és futtasd le kézzel mysql-be, hogy részletes hibaüzenetet kapj.
Valószínűleg az a gondod amúgy, hogy nincsenek idézőjelek közt a stringjeid, jelen esetben az úgy nézne ki hogy:
'".$i22."', '".$i23."', '".$i24."' .....
Tudsz róla, hogy a PHP a kettős idézőjelek között behelyettesíti a változóneveket?
Tehát (".$i1.", ".$i2. stb. helyett egyszerűbb a
($i1, $i2, stb.
Sokkal áttekinthetőbb lesz tőle a kódod, és könnyebb lesz hibát keresni benne. Főleg idézőjelhibát.
#5: és tudtad hogy más problémákba ütközhet ha ezt szokja meg? :-D
Kérdező: Amúgy még egy apróság, ne felejtsd el escape -elni a változókat.
Én sem tudom milyen problémákra gondolsz, esetleg arra, hogy ha mögé ír valamit véletlen?
Épp ezért szokás úgy beilleszteni (vagy csak nekem szokás?), hogy
$var = "Béla {$count}x futotta le a kört."; // kapcsoson kívüli részt nem veszi a változóhoz.
Önmagában az dupla idéző jeles ki íratástól is óvnám.
pl.: amit már említettek ha a változó mögé szorosan szöveg is tartozik.
Vagy ha pl. $ jelet szeretne megjeleníteni akkor dupla $$ -t kell írni, különben hibát kap.
És ott van még ha pl. tömbös elemet írna be és annak is változóból venné az egyik elemét.
pl. $_GET[group][$n]
Ezek amúgy mind szerver beállítás függő is, ahogy pl. a short open tag is hogy <?php vagy elég <? ennyi is.
És mivel a PHP igén gyakran változik alapbeállítások, funkciók is, ezért célszerű úgy megtanulni, megszokni a működését, hogy szerverbeállítás és verziótól függetlenül menjen.
(itt még megjegyezném az SQL -hez, hogy célszerű a nem utasítás elemeket hanem tábla neveket, oszlopokat ` (ALTGr+7) közé tenni, mert ha valami véletlen folytán beletalálsz egy SQL utasításba, akkor hibát fog ki írni, pl. ha frissítés dátumát simán egy `update` elnevezésű mezőbe rakod.)
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!