Örülök, hogy tetszik.
MySQL és PHP, adatok kinyerése
Írta: Tupacko | 2007. szeptember 11. | kategóriák: Adattárolás, MySQL, PHP, ProgramozásA leírásban megtanuljuk kiválasztani a nekünk megfelelő adatbázist, a táblázatok kezelését parancsok lefuttatásával, adatok kinyerését és az eredmény által elfoglalt memória kiürítését. Mi a metodológia? Először is kell csatlakozzunk az sql szerverhez, majd kiválasztani a megfelelő adatbázist. Létre kell hozzuk a parancsunkat és le kell futtasuk azt. Majd a visszatérített adatokat lekezeljük. Utolsó lépésekként, űrítjük a használt memóriát, majd lezárjuk a kapcsolatot. A csatlakozást és a kapcsolat lezárását már leírtam, most a köverkező függvényekkel foglalkozunk: mysql_select_db, mysql_query, mysql_fetch_assoc, mysql_free_result.
mysql_select_db()
A parancs segítségével kiválaszthatjuk az adatbázist, amelyen dolgozni szeretnénk. Az összes mysql_query a kijelölt adatbázison fog végrehajtódni. Két paramétere van, bár csak az első a kötelező. Az első paraméter egy karakterlánc, amely az adatbázis nevét tartalmazza. A második paraméter a kapcsolat azonosítót adja meg, amennyiben egyszerre több kapcsolaton is tevékenykedünk. A visszatérített értékek True és False, a sikerességtől függően. A True értéket abban az esetben kapjuk, amennyiben sikeres volt az adatbázis kiválasztása. Ha nem létezik vagy valami oknál fogva nem lehet csatlakozni az adatbázishoz, a visszatérített érték False lesz.
mysql_query()
A függvény segítségével különböző sql parancsokat futtathatunk, így példáúl adatokat szúrhatunk be a táblázatokba vagy akár táblázatot is létrehozhatunk, de törölhetünk is. Egy szóval bármilyen sql parancsot le tudunk futtatni. A függvény használatához szükségünk van egy alap sql nyelv tudásra.
A függvény szintén két paramátert vár, az első a parnacs, egy karakterlánc formájában, a második a kapcsolat azonosító. A kapcsolat azonosító ez esetben sem kötelező paraméter. Amennyiben nem volt meghatározva a kapcsolat, akkor az utoljára létrehozott kapcsoaltot használja. Ha azonban nem volt létrehozva kapcsolat, akkor megpróbál egyet létrehozni meghívva a mysql_connect függvényt paraméterek nélkül.
A függvény a megadott parancstol függően különböző értékeket térít vissza. Sikertelen esetekben Flase a visszatérített érték. A SELECT, SHOW, DESCRIBE és EXPLAIN parancsokra, siker esetén az eredmény azonosítóját téríti vissza. UPDATE, DELETE, DROP és hasonló parnacsok esetén True a siker jele.
mysql_fetch_assoc()
A függvény segítségével egy asszociatív tömböt térít vissza. A paramétere egy eredmény azonosító, amelyet a mysql_query térített vissza. Hiba esetén False értéket ad. Érdemes megjegyezni, hogy a függvény gyors, case-sensitive és az sql NULL mezőket átalakítja a php NULL értékre.
mysql_free_result()
A függvény nem feltétlen jellegű. Mivel a lefoglalt memória mindig kiűrítődik a kód lefutásának a végén, nem fontos meghívnunk külön a függvényt, mégis, jobb külön üríteni a memóriát, ha egy nagyobb kérést intézünk az sql szerver fele. Példáúl, ha lekérjük egy fórum üzeneteit, majd egy más művelet is akarunk futtatni, jobb, hogyha egyszer ürítjük a memóriát.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | $kapcsolat = @mysql_connect("szerver", "felasznalo", "jelszo"); //a @ blokkolja a php altal kiirando hibat if ( !$kapcsolat ){ die("Nem tudok csatlakozni."); } $valasz = @mysql_select_db("adatbazis"); if ( !$valasz ){ die("Nem tud csatlakozni az adatbazishoz!"); } $parancs = "SELECT * FROM tabla;"; $valasz = @mysql_query($parancs, $kapcsolat); if ( !$valasz ){ die("Nem futott le a patancs!"); } while ( $sor = mysql_fetch_assoc($valasz) ){ echo "A neved: " . $sor['felhasznaloNev'] . "."; } mysql_free_result($valasz); mysql_close($kapcsolat); |
Sziasztok!
Azt szeretném megkérdezni, hogy egyik tábla utoljára felvett rekordjából hogy nyerem ki az auto_increment azonosítót; mert a következő lépésben ugyanehez az azonosítóhoz tartalmazó tulajdonságokat vinnék be egy másik táblába. pHp-ben kicsit macerás, de szeretném megoldani, hogy mindkét táblából jó összetartozó adatokat nyerjek ki!
Köszi Tupacko!
Ez az első problémára talán megoldás, ahol azonosító szerint szeretném szétszedni a kreált táblát.
A következőben LAST_INSERTED_ID-val is kivehetem, de ott növekményes az azonosító és új adatok bevitelénél többször szúrom be az új táblába:
$id=mysql_query(“select max(azon) as $akt from adatok”);
print $id;
itt az adatok táblából így akartam kinyerni az utolsó zonosítót, mert egyértelmű, hogy a legnagyobb érték.
A print helyére mysql_query(“insert into stilus values ($id); után include-dal teszem be a select multiple-lel a többi adatot, így a $id-hoz több adatot vihetek be a listába. A print az ideiglenes, hogy kiírassam, hogy működik-e.
insert into stilus (select Last_id…)
hatásosabb lenne szerinted?
Szóval itt egy táblát rakunk össze egy korábbi azonosító beszúrásával és a többi mezőt listából visszük be. A felhasználói oldalon az azonosítóhoz tartozó összes adatot ki kell nyernünk mindkét táblából. Arra készül majd a gyorskereső mezőkre.
A last_id-s módszert kipróbálom, remélem, működik majd!
Mégegy, a while ($sor=mysql_fetch_array($sqlkif))
függvénynél hibát jelez néha és többszöri próbálkozásra írja ki tömbelemként a változókat. Ez is kemény küzdelem!
Mégegyszer: Köszönöm a segítséget! Ha újabb problémák lesznek, majd megírom!
Az első egy belépés, ahol az űrlapról egy regisztrált felhasználót azonosít. Itt nem az utolsó beszúrt azonosítóra vagyunk kiváncsiak, hanem a lekérdezett felhasználó azonosítóját visszük tovább belépés után és az kerül a bevitt adatokhoz, hogy elkülönüljön, melyik adatcsoportot, melyik felhasználó vitte be.
Resource id #2 selectre ezt írja
0 CD stílusai:
Az a baj, hogy csak abban a file-ban működik a mysql_insert_id(), ahol történt a beszúrás, egy későbbi hívásnál 0 az érték, mert itt már elfelejti.
Hogy lehet megoldani, hogy az utolsó beszúrt rekord azonosítóját későbbi lépésben kinyerjük és felhasználjuk?






végre
köszi, egy ilyen szűkszavú, de érthető és minden lényegeset leíró szöveget kerestem már egy ideje