ugrás a tartalomhoz

2 dimenziós tömb mentése sql-be

mokat · 2009. Okt. 16. (P), 10.25
sziasztok,

a múltkori szálat folytatva, ahol sikerült jó tippeket kapnom és megoldanom a problémám, ismét a segítségeteket kérném:

Van egy tömböm, tele mindenjó sztringekkel:

$_SESSION['sor'][] = array (
"esemeny" => $_POST['meccs'],        
"kimenetel" => $_POST['tipp'],
);
ezt szeretném berakni a megfelelő SQL táblába, ami a bonyodalmat okozza és megakadtam benne, hogy külön mezőbe szeretném mindegyiket:
SQL tábla: teszt
SQL mezők: meccsek, tippek

'soronként' töltené: meccs ---> meccsek mezőbe, a tipp ---> tippek mezőbe
 
1

...

carstepPCE · 2009. Okt. 16. (P), 11.05
talan,

foreach( $session['sor'] as $item )
{
   // ide jon az sql, ami berakja a tablaba az ertekeket
   // az ertekek pedig a $item['esemeny'] es $item['kimenetel'] valtozoban vannak
}
ha igazan szepen akarod megoldani, akkor gyujto sql-t csinalsz es escape -eled a beviendo ertekeket.
gyujto sql minta(MySQL eseten):

  insert into `teszt` ('meccs','tipp') values ( meccs1,tipp1),(meccs2,tipp2)....(meccsN,tippN);
ugyelj, melyik szam tipusu, melyik szoveg tipusu
udv.
2

köszi a megoldást!

mokat · 2009. Okt. 16. (P), 12.33

 foreach( $_SESSION['sor'] as $item )  
    {  
     mysql_query("INSERT INTO teszt (meccsek,tippek) VALUES ('$item[esemeny]' , '$item[kimenetel]'") or die(mysql_error());   
    } 
3

Megjegyzés

gphilip · 2009. Okt. 16. (P), 13.39
Hali!

Csak néhány megjegyzés a kóddal kapcsolatban:
ha ez production code, akkor mindenképpen javaslom, hogy

1. Az or die(mysql_error() műveletet távolÍtsd el, mert alkalmat adhat az adatbázisod feltérképezésére, extrém esetben a teljes adatbázis olvasására.

Használj általad készÍtett hibakezelő függvényt itt, ami egy fájlba logol. Még jobb, ha egy adaptor vagy activerecord osztállyal oldod meg az adatbázis elérését

2. Az értékek beszúrásánál minden esetben használj escape-elést, még akkor is, ha a nbeszúrandó értékek nem a felhasználótól származnak. Ennek szintén biztonsági okai vannak.

3. Egyetlen mysql query-vel valóban szebb.

Itt egy példakód a fentiek figyelembe vételével:

$values=array();

foreach( $_SESSION['sor'] as $item )    
{    
	$values[]=sprintf(
		"('%s' , '%s')",
		mysql_real_escape_string($item[esemeny]),
		mysql_real_escape_string($item[kimenetel])
	);
}

mysql_query("INSERT INTO teszt (meccsek,tippek) VALUES " . implode(",", $values)) or mysql_hiba_kezel(mysql_error());
(Nem teszteltem.)
4

köszi köszi

mokat · 2009. Okt. 19. (H), 09.52
köszönöm megfontolom a tanácsodat, lesz mit betömködni :)