Kezdőoldal » Számítástechnika » Weblapkészítés » Beillesztés adatbázisba hiba?

Beillesztés adatbázisba hiba?

Figyelt kérdés

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.")");



2015. szept. 26. 21:20
 1/9 anonim ***** válasza:
Egyszerűbb lenne kiiratni a hibát, pl beilleszted phpmyadminba.
2015. szept. 26. 21:39
Hasznos számodra ez a válasz?
 2/9 A kérdező kommentje:
Ezt autómatikusan kellene csinálnia, mert olyanok is lefuttatnák a kódot, akiknek nincs hozzáférésük az adatbázishoz. Szóval ez nem járható út.
2015. szept. 26. 21:44
 3/9 anonim ***** válasza:

#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."' .....

2015. szept. 26. 21:50
Hasznos számodra ez a válasz?
 4/9 A kérdező kommentje:
Tényleg az volt a hiba, nagyon szépen köszönöm!
2015. szept. 26. 21:56
 5/9 anonim ***** válasza:

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.

2015. szept. 27. 08:42
Hasznos számodra ez a válasz?
 6/9 anonim ***** válasza:

#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.

2015. szept. 27. 10:28
Hasznos számodra ez a válasz?
 7/9 anonim ***** válasza:
Milyen problémákra gondolsz?
2015. szept. 27. 11:12
Hasznos számodra ez a válasz?
 8/9 anonim ***** válasza:

É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.

2015. szept. 27. 11:18
Hasznos számodra ez a válasz?
 9/9 anonim ***** válasza:

Ö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.)

2015. szept. 27. 13:54
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!