Segédletek.hu
Segédletek weblap szerkesztéshez!
Fórum:
Postaláda:
Szavazás:
Hány éves vagy?
Segédletek:
Linkek:
MySQL alapfokon - 2:
Sorozat - mysql alapok a kezdetekhez:Ebben a részben megismerkedünk a PHP MySQL programozás legfontosabb funkciójával: a mysql_query()-vel és megtanulhattok néhány hasznos SQL utasítást is.
Az előző részben megtanultuk, hogy hogyan csatlakozzunk MySQL adatbázishoz, így aki nem rendelkezik a szügséges alaptudással, annak javaslom először a MySQL alapfokon - 1-et.
Ahhoz, hogy táblákat hozhassunk létre egy MySQL adatbázisban, először is csatlakozni kell hozzá, ahogy az előző leckéből megtanulhattuk:
A kapcsolat meg van nyitva, a kimenet üres (ha nem, akkor valamit nem jól csináltunk: olvassuk el újra a MySQL alapfokon - 1-et.)
Akkor most hozzunk létre egy MySQL adatbázistáblát.
Mint láthatjuk, a $proba_query megkapta a mysql_query() visszatérési értékét - ez később fontos lesz a kapott információk feldolgozásában, most gyakorlatilag semmilyen haszna nincsen.
A mysql_query() első paramétere maga az SQL utasítás, a többi rsézével egyelőre nem foglalkozunk.
A CREATE kulcsszóval utasítjuk az adatbázist, hogy hozzon létre valamit - ebben az esetben egy táblát: CREATE TABLE. Ezután meg kell adnunk az oszlopokat és azok tulajdonságait.
3 oszlopot adtunk meg a users táblánkba: id, name és email. Kezdjük az id oszloppal.
Az id oszlop integer típusú (ami azt jelenti, hogy csak számoakt tartalmazhat, méghozzá a számsor nem lehet hoszabb a zárójelben megadott értéknél - ebben az esetben 9-nél, tehát az 123456789 még jó, de a 0123456789 már érvénytelen, ugyanis 10 karakter hosszúságú.), és a karakterhosszúság nem lehet nagyobb 9-nél (a 10., 11., ... karakterek elvesznek).
További 2 paramétert is láthatunk az id oszlopban: NOT NULL és AUTO_INCREMENT.
A NOT NULL értelemszerűen azt jelenti, hogy az értéke nem lehet nulla - vagyis semmi.
Az utóbbi, AUTO_INCREMENT azt jelenti, hogy minden alkalommal, amikor új sort szúrunk be, akkor ennek az értéke 1-el növekedni fog. Tehát ha beszúrunk egy sort az üres táblába, akkor az id értéke 1 lesz (feltéve ha nem adunk neki értéket - nem érdemes, ha értéket akarunk beszúrni, akkor ne használjuk ezt a kulcsszót.).
Minden egyes további sorral 1-el nő az értéke - így könnyen azonosítani tudjuk az adott sort, ami igen hasznos. Erről az azonosításról egy kicsit később lesz szó.
A másik oszlop a name, ami VARCHAR típusú, tehát tartalmazhat bármilyen karaktert, de maxmimum 255 karakter hosszú lehet. Érdemes használni ezt ha felhasználó neveket, fórum neveket, stb. akarunk tárolni. A hozzászólások tárolására, felhasználó leírásokra és egyebekre használjuk inkább a TEXT típust, ami maximum több mint 2 millió karakter hosszú lehet.
A karakterhosszúságot itt is a zárójelben adhatjuk meg.
Tehát hátradőlhetünk: létrehoztuk az első adatbázis táblánkat! A kimenet változatlanul üres, ha mégsem, akkor valamit rosszul csináltunk.
Jöhet a következő kérdés: hogyan szúrjunk be új sort az adatbázis táblánkba? Erre használjuk az INSERT utasítást.
Használata a következő:
Az INSERT paranccsal arra utasítjuk az adatbázist, hogy beszúrjon valamit, az INTO-val pedig beállítjuk, hogy hova - ebben az esetben a users táblába.
Ezután következik az első zárójel, amiben megadjuk azokat az oszlopokat, amiknek értéket kívánunk adni.
Ezután következik a VALUES kulcsszó, és ezután az értékek - ugyanolyan sorrendben, mint az oszlopok.
Vegyük észre, hogy nem szúrtunk be semmit az id sorba, az értéke viszont 1 lett.
Következik az utolsó utasítás, amit a mai lexkében megtanulhatuk: a SELECT.
Ennek az utasításnak a segítségével ki tudjuk nyerni az adatbázis táblákból az adatokat (használhatjuk a SHOW utasítást is, de egyelőre maradjunk az INSERT-nél).
A * azt jelenti, hogy minden oszlop tartalmára kíváncsiak vagyunk, de adott esetben leszűkíthetjük és akkor a * helyére mondjuk name, email kerül.
A FROM a táblát jelöli, tehát a FROM után írjuk a tábla nevét.
Használjuk a WHERE utasítást a tábla neve után, hogy meghatározzuk, hogy mely sorokat akarjuk visszakapni eredményként.
Használata a következő:
Ekkor csak az(oka)t a sorokat kapjuk vissza eredményként, ahol a 'name' oszlop értéke 'név'.
De ekkor a kimenet még mindig üres.
Hopp, itt már bejött néhány új utasítás: a print_r() és a mysql_fetch_assoc().
A print_r() kiírja egy tömb tartalmát (további információkat a php.net -en találsz.).
A mysql_fetch_assoc() praramétereként meg kell adnunk egy mysql_query visszatérési értékét és visszadja a következő sort egy tömbben, ahol az oszlopok a kulcsok.
Az nl2br a \n és \r\n sortöréseket <br>-é alakítja át.
Ennyi fért bele rövidke kis cikkembe, hamarosan jön a 3. rész, és tervbe van véve egy-két cikk a haladóknak is, csak türelem!
A cikkben használt új utasítások:
print_r()
nl2br()
mysql_fetch_assoc()
mysql_query()
By. Gaia
Ahhoz, hogy táblákat hozhassunk létre egy MySQL adatbázisban, először is csatlakozni kell hozzá, ahogy az előző leckéből megtanulhattuk:
<?php
// MySQL alapfokon - 2. első kódrészlet
//a mysql_query() használata
include("kapcsolat.php");
A kapcsolat meg van nyitva, a kimenet üres (ha nem, akkor valamit nem jól csináltunk: olvassuk el újra a MySQL alapfokon - 1-et.)
Akkor most hozzunk létre egy MySQL adatbázistáblát.
$proba_query = mysql_query("
CREATE TABLE users
(
id INT(9) NOT NULL AUTO_INCREMENT,
name VARCHAR(40) NOT NULL,
email VARCHAR(60) NOT NULL
) TYPE = MyISAM;") or die(mysql_error());
Mint láthatjuk, a $proba_query megkapta a mysql_query() visszatérési értékét - ez később fontos lesz a kapott információk feldolgozásában, most gyakorlatilag semmilyen haszna nincsen.
A mysql_query() első paramétere maga az SQL utasítás, a többi rsézével egyelőre nem foglalkozunk.
A CREATE kulcsszóval utasítjuk az adatbázist, hogy hozzon létre valamit - ebben az esetben egy táblát: CREATE TABLE. Ezután meg kell adnunk az oszlopokat és azok tulajdonságait.
3 oszlopot adtunk meg a users táblánkba: id, name és email. Kezdjük az id oszloppal.
Az id oszlop integer típusú (ami azt jelenti, hogy csak számoakt tartalmazhat, méghozzá a számsor nem lehet hoszabb a zárójelben megadott értéknél - ebben az esetben 9-nél, tehát az 123456789 még jó, de a 0123456789 már érvénytelen, ugyanis 10 karakter hosszúságú.), és a karakterhosszúság nem lehet nagyobb 9-nél (a 10., 11., ... karakterek elvesznek).
További 2 paramétert is láthatunk az id oszlopban: NOT NULL és AUTO_INCREMENT.
A NOT NULL értelemszerűen azt jelenti, hogy az értéke nem lehet nulla - vagyis semmi.
Az utóbbi, AUTO_INCREMENT azt jelenti, hogy minden alkalommal, amikor új sort szúrunk be, akkor ennek az értéke 1-el növekedni fog. Tehát ha beszúrunk egy sort az üres táblába, akkor az id értéke 1 lesz (feltéve ha nem adunk neki értéket - nem érdemes, ha értéket akarunk beszúrni, akkor ne használjuk ezt a kulcsszót.).
Minden egyes további sorral 1-el nő az értéke - így könnyen azonosítani tudjuk az adott sort, ami igen hasznos. Erről az azonosításról egy kicsit később lesz szó.
A másik oszlop a name, ami VARCHAR típusú, tehát tartalmazhat bármilyen karaktert, de maxmimum 255 karakter hosszú lehet. Érdemes használni ezt ha felhasználó neveket, fórum neveket, stb. akarunk tárolni. A hozzászólások tárolására, felhasználó leírásokra és egyebekre használjuk inkább a TEXT típust, ami maximum több mint 2 millió karakter hosszú lehet.
A karakterhosszúságot itt is a zárójelben adhatjuk meg.
Tehát hátradőlhetünk: létrehoztuk az első adatbázis táblánkat! A kimenet változatlanul üres, ha mégsem, akkor valamit rosszul csináltunk.
Jöhet a következő kérdés: hogyan szúrjunk be új sort az adatbázis táblánkba? Erre használjuk az INSERT utasítást.
Használata a következő:
$insert_query = mysql_query("INSERT INTO users ( name, email ) VALUES ( 'név', 'dezso@dezsonet.hu')") or die(mysql_error());
Az INSERT paranccsal arra utasítjuk az adatbázist, hogy beszúrjon valamit, az INTO-val pedig beállítjuk, hogy hova - ebben az esetben a users táblába.
Ezután következik az első zárójel, amiben megadjuk azokat az oszlopokat, amiknek értéket kívánunk adni.
Ezután következik a VALUES kulcsszó, és ezután az értékek - ugyanolyan sorrendben, mint az oszlopok.
Vegyük észre, hogy nem szúrtunk be semmit az id sorba, az értéke viszont 1 lett.
Következik az utolsó utasítás, amit a mai lexkében megtanulhatuk: a SELECT.
Ennek az utasításnak a segítségével ki tudjuk nyerni az adatbázis táblákból az adatokat (használhatjuk a SHOW utasítást is, de egyelőre maradjunk az INSERT-nél).
$select_query = mysql_query("SELECT * FROM users") or die(mysql_error());
A * azt jelenti, hogy minden oszlop tartalmára kíváncsiak vagyunk, de adott esetben leszűkíthetjük és akkor a * helyére mondjuk name, email kerül.
A FROM a táblát jelöli, tehát a FROM után írjuk a tábla nevét.
Használjuk a WHERE utasítást a tábla neve után, hogy meghatározzuk, hogy mely sorokat akarjuk visszakapni eredményként.
Használata a következő:
$select_query2 = mysql_query("SELECT * FROM users WHERE name='név'") or die(mysql_error());
Ekkor csak az(oka)t a sorokat kapjuk vissza eredményként, ahol a 'name' oszlop értéke 'név'.
De ekkor a kimenet még mindig üres.
while($sor = mysql_fetch_assoc($select_query2))
{
echo nl2br(print_r($sor."", true));
}
Hopp, itt már bejött néhány új utasítás: a print_r() és a mysql_fetch_assoc().
A print_r() kiírja egy tömb tartalmát (további információkat a php.net -en találsz.).
A mysql_fetch_assoc() praramétereként meg kell adnunk egy mysql_query visszatérési értékét és visszadja a következő sort egy tömbben, ahol az oszlopok a kulcsok.
Az nl2br a \n és \r\n sortöréseket <br>-é alakítja át.
Ennyi fért bele rövidke kis cikkembe, hamarosan jön a 3. rész, és tervbe van véve egy-két cikk a haladóknak is, csak türelem!
A cikkben használt új utasítások:
print_r()
nl2br()
mysql_fetch_assoc()
mysql_query()
By. Gaia
Írta: Gaia - 2006-10-28 11:59:23
* Nem vagy bejelentkezve!* Nem töltheted le a segédlet forrását egyben!
* Nem szavazhatsz a segédletre!
* Nem írhatsz a segédlethez tartozó fórum témába!
| mrdexter | 2009-08-25 07:17:06 |
| Én nem igazan értek a mysql-hez, de szerintem ez hianyzik "PRIMARY KEY". $proba_query = mysql_query(" CREATE TABLE users ( id INT(9) NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(40) NOT NULL, email VARCHAR(60) NOT NULL ) TYPE = MyISAM;") or die(mysql_error()); |
|
| Bucimaci | 2008-05-18 15:19:27 |
| Incorrect table definition; there can be only one auto column and it must be defined as a key Nekem ezt írta ki pedgí mindent jól csináltam:S HELP pls |
|

