Hogyan írjunk adatokat mysql-be. Adatok hozzáadása PHP-ben. Felhasználói bevitel mentése a DB-be

Ebből az útmutatóból megtudhatja, hogyan kezdje el az adatbázis kezelését saját számítógépéről PHP forgatókönyv. tanulni fogsz rekord hozzáadása egy MySQL táblához, segítségével php kód. Mielőtt elkezdené, tekintse meg a többi oktatóanyagunkat, amelyek lefedik a PHP-vel és adatbázisokkal való munka alapvető lépéseit – a PHP és a MySQL adatbázis közötti kapcsolódást.

Mielőtt elkezdené, ellenőrizze a következőket:

  • Hozzáférés a tárhely vezérlőpultjához

1. lépés – Táblázat létrehozása

Először is létre kell hoznunk egy táblázatot az adatokhoz. Ez egy nagyon egyszerű eljárás, amelyet megtehet phpMyAdmin a tárhely vezérlőpultjáról. Egy korábbi oktatóanyagban már foglalkoztunk a MySQL-adatbázis létrehozásának folyamatával, ezért ezt a pontot itt kihagyjuk.

Miután belépett a phpMyAdmin oldalra, hasonló képet fog látni:

Hozzunk létre egy táblát, melynek neve Diákok adatbázisunkhoz u266072517_name. A gombra kattintva új táblázatot hozhat létre Táblázat létrehozása. Ezután megjelenik egy új oldal, ahol megadhatja a táblázatához szükséges összes adatot:

Ez a legegyszerűbb módja a tábla létrehozásának, a tábla/adatbázis szerkezetéről és az egyes mezőkhöz használható beállításokról a hivatalos phpMyAdmin dokumentációban olvashat bővebben.

Íme néhány egyszerű magyarázat az általunk használt mezőkre:

  • Név a mező neve. A táblázat legtetején fog megjelenni.
  • típus– itt állíthatja be a mező típusát. Például választunk varchar, mert itt egy sztringet kell megadnunk egy névvel (amiben betűk vannak, nem számok).
  • Hossz/Értékek– a rekord maximális hosszának beállítására szolgál ebben a mezőben.
  • Index– az „ID” mezőnknek az „Elsődleges” indexet használjuk. Táblázat létrehozásakor ajánlatos egy azonosító mezőt használni. A táblákban lévő rekordok indexelésére szolgál, amikor a táblák közötti kapcsolatokat beállítják. Itt is megjegyezhető „A_I”, ami azt jelenti Automatikus növelés. Ez a beállítás automatikusan növeli az indexet (1,2,3,4…).

Kattintson Megmentés létrejön az asztalod.

2. lépés – A PHP kód generálása és egy rekord hozzáadása a MySQL táblához

1. lehetőség – MySQLi módszer

Először is kapcsolatot kell létesítenie az adatbázissal, korábbi útmutatónk szerint. Ezt követően folytathatjuk az SQL lekérdezéssel, hogy rekordot adjunk a MySQL táblához − BESZÁLLÍTÁS. Íme egy teljes kódpélda kapcsolattal és beillesztési módszerrel:

" . mysqli_error($conn); ) mysqli_close($conn); ?>

Így a kód első része (sorok 3 – 18 ) részei az adatbázishoz való kapcsolat létrehozásának. Ezt a részt nem fogjuk újra végigvinni, ha szeretné tudni, hogy az egyes sorok mit jelentenek, tekintse meg korábbi oktatóanyagunkat az adatbázishoz való csatlakozásról.

Kezdjük a vonallal 19 :

$sql = "INSERT INTO tanulók (név, vezetéknév, e-mail) ÉRTÉKEK ("Thom", "Fiola", " [e-mail védett]")";

Ez a kód legfontosabb sora, ez mindent megtesz, amit ebben az oktatóanyagban leírunk - hozzáad egy MySQL tábla bejegyzést az adatbázishoz. INSERT INTO egy olyan kifejezés, amely rekordot ad a megadott MySQL adatbázistáblához. Példánkban adatokat adunk a táblázathoz Diákok.

Továbblépve, zárójelben megadjuk a táblázat mezőit, az értékeket, amelyekhez hozzáadjuk: (név, vezetéknév, email). Az adatok meghatározott sorrendben kerülnek hozzáadásra. Ha írunk (e-mail, vezetéknév, név), az értékek más sorrendben kerülnek hozzáadásra.

Az érték következő része ÉRTÉKEK. Itt beállítjuk értékeinket a korábban megadott mezőkre. Így minden mező megkapja a saját értékét. Például a mi esetünkben ez valami ilyesmi lenne: name=Tom, vezetéknév=Fiola, email= [e-mail védett] .

Fontos megjegyezni, hogy itt alkotunk SQL lekérdezés PHP kód használatával. Az SQL lekérdezéseket idézőjelek közé kell tenni. Példánkban az idézőjelek között és a $sql = után minden SQL lekérdezés.

A kód következő része ( 20 – 22 sor) futtatja a lekérdezést, és ellenőrzi, hogy a lekérdezés sikeres volt-e:

If (mysqli_query($conn, $sql)) ( echo "Új rekord sikeresen létrejött"; )

Sikeres üzenet jelenik meg, ha a lekérdezés megfelelően futott.

És az utolsó rész 22 – 24 sorok) másik üzenetet jelenítenek meg arra az esetre, ha a kérésünk sikertelen lenne:

Else ( echo "Hiba: " . $sql . "
" .mysqli_error($conn); )

Ez a kód hibaüzenetet jelenít meg számunkra, ha valami hiba történt.

2. lehetőség – PHP adatobjektum módszer (P HP Data O objektum)

Az előző példához hasonlóan először létre kell hoznunk egy adatbázis-kapcsolatot, ami egy új PDO objektum létrehozásakor történik - az előző oktatóanyag elmagyarázza, hogyan kell ezt megtenni. Mivel a MySQL adatbázis-kapcsolat egy PDO objektum, a lekérdezés előkészítéséhez és futtatásához különféle PDO „metódusokat” (olyan függvényeket, amelyek egy adott objektum részét képezik) kell használnunk. Az objektum metódusokat így hívják:

$the_Object->the_Method();

A PDO lehetővé teszi az SQL kód „előkészítését” a végrehajtás előtt. Az SQL-lekérdezést a rendszer kiértékeli és beállítja a futtatás előtt. Így egy egyszerű SQL injekciós támadás végrehajtható egy űrlapmező SQL kódjának kitöltésével. Például:

// A felhasználó ezt írja be egy bejelentkezési űrlap felhasználónév mezőjébe thom"; DROP DATABASE user_table; // A végső lekérdezés a következő lesz: "SELECT * FROM user_table WHERE felhasználónév = thom"; DROP DATABASE user_table;

Mivel az SQL kód szintaktikailag helyes, a pontosvessző teszi DROP DATABASE user_tableúj SQL-lekérdezés, és a felhasználói tábla eldobásra kerül. Az előkészített kifejezések nem engedélyezik a karaktereket és ; az eredeti kérés és az utasítás kitöltéséhez DROP ADATBÁZIS soha nem fogják kivégezni.

Mindig előkészített lekérdezéseket használjon, amikor adatokat küld vagy fogad egy PDO-val rendelkező adatbázisból.

Az előkészített kifejezések használatához létre kell hoznia egy új változót, amely meghívja a metódust készít() az adatbázis objektumon.

A helyes kód így néz ki:

$szervernév = "mysql.hostinger.com"; $adatbázis = "u266072517_name"; $felhasználónév = "u266072517_user"; $password = "buystuffpwd"; $sql = "mysql:host=$szervernév;dbname=$adatbázis;"; $dsn_Options = ; // Új kapcsolat létrehozása a MySQL adatbázissal PDO használatával, a $my_Db_Connection egy objektumpróba ( $my_Db_Connection = new PDO($sql, $username, $password, $dsn_Options); echo "Sikeres csatlakozás"; ) catch (PDOException $ error) ( echo "Kapcsolódási hiba: " . $error->getMessage(); ) // Állítsa be a változókat annak a személynek, akit fel akarunk adni az adatbázishoz $first_Name = "Thom"; $last_Name = "Fiola"; $email = " [e-mail védett]"; // Itt hozunk létre egy változót, amely meghívja az adatbázis objektum ready() metódusát // Paraméterként a futtatni kívánt SQL lekérdezést adjuk meg, és a helyőrzőket így írjuk: helyőrző_neve $my_Insert_Statement = $my_Db_Connection-> ready("INSERT INTO Students (név, vezetéknév, email) VALUES (:keresztnév, :last_name, :email)"); // Most megmondjuk a szkriptnek, hogy az egyes helyőrzők melyik változóra hivatkoznak valójában a bindParam() metódussal // Először paraméter a helyőrző a fenti utasításban - a második paraméter egy változó, amelynek a következőre kell hivatkoznia: $my_Insert_Statement->bindParam(:first_name, $first_Name); $my_Insert_Statement->bindParam(:last_name, $last_Name); $my_Insert_Statement-> bindParam(:email, $email); // A lekérdezés végrehajtása az imént definiált adatokkal // Az execute() metódus TRUE-t ad vissza, ha sikeres, és FALSE-t, ha nem, lehetővé téve itt saját üzenetek írását, ha ( $my_Insert_Statement->execute()) ( echo "Új rekord sikeresen létrehozva"; ) el se ( echo "Nem lehet rekordot létrehozni"; ) // Ezen a ponton módosíthatja a változók adatait, és végrehajthatja újra, hogy további adatokat adjon az adatbázishoz $first_Name = "János"; $last_Name = "Smith"; $email = " [e-mail védett]"; $my_Insert_Statement->execute(); // Végezze el újra, most, hogy a változók megváltoztak if ($my_Insert_Statement->execute()) ( echo "Új rekord sikeresen létrejött"; ) else ( echo "Nem lehet rekordot létrehozni"; )

A 28., 29. és 30. sorban a módszert használjuk bindParam() adatbázis objektum. Van egy módszer is bindValue(), eltér az előzőtől.

  • bindParam() - ez a metódus számolja az adatokat, amikor a metódus végrehajt() elérte. Amikor a szkript először eléri a metódust végrehajt() ezt látja $first_name"Thom"-ra hivatkozik, megköti ezt az értéket, és végrehajtja a lekérdezést. Amikor a szkript másodszor is eljut a metódushoz végrehajt()úgy néz ki $first_name most "János"-ra hivatkozik, összekapcsolja ezt az értéket, és újra futtatja a lekérdezést az új értékkel. Fontos megérteni, hogy egyszer létrehozunk egy kérést, majd a szkript különböző helyein különböző adatokat helyettesítünk.
  • bindValue() - ez a módszer kiértékeli az adatokat, amint a várólista eléri azokat. Mivel az érték $first_name"Thom"-nak adták, abban a pillanatban, amikor eljutottunk a módszerhez bindValue(), a metódus meghívásakor lesz használva végrehajt() számára $my_Insert_Statement.

Vegye figyelembe, hogy a változót újra felhasználjuk $first_nameés adj neki másodszor is új értéket. Ha a szkript futtatása után ellenőrzi az adatbázisát, mindkét megadott név ott lesz, a változó értéke ellenére $first_name egyenlő lesz a "John"-val a forgatókönyv végén. Ne feledje, hogy a PHP kiértékeli a szkript tartalmát a futtatás előtt.

Ha cserével módosítja a szkriptet bindParam a bindValue, akkor kétszer hozzáadja a "Thom Vial" kifejezést a MySQL adatbázishoz, és John Smith figyelmen kívül marad.

3. lépés – A siker ellenőrzése és a gyakori problémák megoldása

Ha a lekérdezés, amelyet a MySQL adatbázison futtattunk, sikeres volt, a következő üzenetet fogjuk látni:

Gyakori hibák megoldása

MySQLi

Minden más esetben hibaüzenet jelenik meg a fenti üzenet helyett. Például csináljunk egy szintaktikai hibát a kódunkban, és ezt kapjuk:

Mint látjuk, a kód első része rendben van, a kapcsolat sikeresen létrejött, de az SQL lekérdezésünk meghiúsult a végrehajtás során.

"Hiba: INSERT INTO Students (név, vezetéknév, e-mail) VALUES ("Thom", "Vial", " [e-mail védett]") Hiba van az SQL-szintaxisban; ellenőrizze a MySQL-kiszolgáló verziójának megfelelő kézikönyvben a megfelelő szintaxist a "(név, vezetéknév, e-mail) VALUES ("Thom", "Vial", ") közelében [e-mail védett]")" az 1. sorban"

Egy szintaktikai hiba miatt a szkriptünk meghiúsul. A hiba itt volt:

$sql = "INSERT INTO tanulók (név, vezetéknév, e-mail) ÉRTÉKEK ("Thom", "Fiola", " [e-mail védett]")";

Amint látja, kerek fogszabályozó helyett göndör fogszabályzót használunk. Ez helytelen, és szintaktikai hibát eredményez a szkriptünkben.

OEM

A PDO kapcsolat 7. sorában a hibakezelési mód „minden kivétel megjelenítése” értékre van állítva. Ha kiveszi ezt a szkriptből, és a kérés sikertelen, akkor nem fog hibaüzenetet kapni. Ha a kivételek engedélyezve vannak, akkor megjelennek a felmerült problémák. Általában ezt a legcélszerűbb egy szkript fejlesztésekor használni, mivel felfedheti az adatbázis- és táblaneveket, amelyeket el szeretne rejteni mindenki elől, aki jogosulatlanul hozzáférhet az adataihoz. A fenti esetben, amikor göndör fogszabályzót használtak kerek fogszabályozó helyett, a hiba az alábbiak szerint néz ki:

Végzetes hiba: „PDOException” nem észlelt kivétel „SQLSTATE: Szintaktikai hiba vagy hozzáférési hiba: 1064 Hiba van az SQL-szintaxisban; ellenőrizze a MySQL szerver verziójának megfelelő kézikönyvben a megfelelő szintaxist a "(név, vezetéknév, e-mail) VALUES ("Thom", "Vial", ") közelében [e-mail védett]")" az 1. sorban"

Egyéb problémák, amelyekkel találkozhat:

  • Helytelenül megadott mezők (nem létező mezők vagy helyesírási hibák).
  • Az értéktípus nem egyezik a mezőtípussal. Például amikor egy szám értékét szeretnénk hozzárendelni 47 terület Név, hibaüzenetet kapunk, mert az értéknek egy karakterláncnak kell lennie. De ha például idézőjelben ad meg egy számot, “47” , nem lesz hiba, mert ebben a mezőben a számunk karakterláncként lesz beírva.
  • Kísérlet történt olyan táblába való adatbevitelre, amely nem létezik, vagy helyesírási hiba történt a tábla nevében.

Mindezek a hibák kijavíthatók a hibaelhárítási útmutatók követésével vagy a hibanapló ellenőrzésével.

Az adatok sikeres hozzáadása után látnunk kell az adatbázisunkban. Íme egy példa egy táblázatra, amelybe hozzáadtuk adatainkat, ahogyan az látható phpMyAdmin.

Következtetés

Ebben az útmutatóban megtanulta, hogyan kell használni PHP kód rekord hozzáadásához a MySQL táblához segítségével MySQLiés OEM. Figyelembe vették a gyakori hibák eseteit és azok megoldásait is. Ha megtanulod, hogyan kell PHP-kóddal hozzáadni egy MySQL adatbázist, akkor hasznos lesz, ha kódolni tanulsz, vagy már építed saját webhelyedet.

Egy webhely vagy webalkalmazás minden olyan modulja, ahol meg kell adni és rögzíteni kell bizonyos adatokat (például név, életkor, cím stb.), egy egyszerű mysql függvényt használ INSERT INTO `name_base` (név,érték1,érték2) ÉRTÉKEK ( 'Vasya','1','2');

Minden változó bekerül az adatbázisba az első zárójelben megadott értékek szerint. Fontos figyelembe venni a kezelő szkriptjének, adatbázisának és konfigurációs fájljának kódolását. Célszerű a legáltalánosabb UTF-8 kódolást használni.

Ne feledje, hogy kétféleképpen írhat az adatbázisba.

Első út ha kezdetben nem állítjuk be az adatbázistáblák cellaneveit. Ezután minden cellához fel kell sorolnunk az összes változót, nevezetesen, hogy hány cella van az adatbázistáblában, így sok változót kell zárójelben feltüntetni az ÉRTÉK érték után.

Például:
Az adatbázistábla négy cellából áll. Ez azt jelenti, hogy az ÉRTÉK (..) elem után mind a négy változót zárójelben kell feltüntetni. És még valami: ha a változó nem létezik, tegyük fel, hogy ez egy opcionális paraméter. Ezután csak egy üres értéket írunk idézőjelbe '',

"INSERT INTO `name_base` VALUES (NULL, "".$name."`,``,`2`)"; // a harmadik üres értéket idézőjelbe írjuk

Ennek a kérésnek azonban vannak kisebb hátrányai. Ha egy vagy két cellát ad hozzá egy adatbázistáblához, akkor ez a lekérdezés hibát ad vissza. Mert ennél a módszernél a lekérdezésben szereplő összes cella felsorolása kötelező.

Második út ha az INSERT INTO `name_base` (...) lekérdezés után listázza ki az összes cellát az adatbázis neve után. Egy példát már fentebb tárgyaltunk. Ha elfelejtette, írjon újra:

"INSERT INTO `name_base`(`name,`value`,`value2`) ÉRTÉKEK (NULL, "".$name."`,``,`2`)";

Itt felsoroltuk az összes cellát (név,érték1,érték2). És ha további két cellát ad hozzá az adatbázistáblához, akkor a lekérdezés szintaxisát nem kell módosítani. De hacsak nem kell egyszerre hozzáadnunk azokat a nagyon további változókat, amelyekre szükségünk van azokhoz a nagyon újonnan létrehozott cellákhoz.

Egy ilyen hiba nagyon gyakran összeomlik, a webhelyen végrehajtott apró változtatások után. Tegyük fel, hogy a rendszergazda hozzáadott egy további cellát az adatbázishoz, mondjuk állapotot. De a szkriptkezelőnek nem volt ideje megváltoztatni a modult, vagy egyszerűen elfelejtette. Néhány webhely azonban nagyon összetett szerkezettel rendelkezik, és sok időt és erőfeszítést igényelhet a hiba megtalálása. Ezért kívánatos a második módszer alkalmazása az adatbázisba való íráshoz. Bár ezt a fajta hibát gyakrabban követik el a kezdő webprogramozók.

php írása mysql adatbázisba. Gyakorlati példák

Tehát most eljutottunk a dolog lényegéhez, amikor adatbázislekérdezésekkel dolgozunk. Mindent gyakorlati példák alapján fogunk megtenni. Hozzon létre egy egyszerű szkriptet a webhely látogatói által hagyott megjegyzések rögzítéséhez.

Először is hozzunk létre egy táblázatüzenetet az adatbázisban négy cellával. Az első cellába írjuk a megjegyzés azonosítóját. A cellában lévő karakterek száma legfeljebb tíz karakter lehet az automatikus növelés paraméterrel. Ez az automatikus beállítás minden alkalommal megváltozik, amikor megjegyzést ad hozzá a +1-hez.

A következő cella neve a felhasználónév. Karakterek száma - legfeljebb kétszáz - háromszáz tetszőleges karakter, char paraméter. Ezután a megjegyzés cella - ebbe a cellába írjuk be magát a megjegyzés szövegét. Ha nagy kommentszövegeket szeretne rögzíteni, akkor beállíthatja a szöveg paramétert - ekkor egyszerűen beírhat hatalmas szövegeket, több mint ötszázezer karaktert, vagy beállíthatja a tinytext paramétert, akkor kicsit kevesebb karakter fér bele, de működik kicsit gyorsabban.

De a mi esetünkben észben tartjuk, hogy a látogatók nem fognak hatalmas szövegeket írni. Ezért korlátozzuk magunkat, és kétezer karaktert rögzítünk a varchar paraméterrel, hogy karakterlánc-értékeket írjunk.

Az utolsó cellába a megjegyzés szövegbevitelének dátumát írjuk. Számszerű formátumban írunk másodpercekben, az aktuális dátum és idő függvény time(); Az egyszerűség kedvéért a függvényt a $time=time(); És hozzon létre egy cellát az adatbázisban. Nevezzük el ugyanazt az időt az int paraméterrel (numerikus értékekhez). Írjuk fel a karakterek számát – a tizenegy jobb (kis margóval a jövőre nézve :-).

Az adatbázis kiíratása a következő:

`msg` tábla szerkezete -- CREATE TABLE IF NOT EXISTS `msg` (`id` int(10) NOT NULL AUTO_INCREMENT, `name` char(250) NOT NULL, `comment` varchar(2000) NOT NULL, `time` int(11) NEM NULL, ELSŐDLEGES KULCS (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Minden, egy táblázat a megjegyzésekhez készült. Most írunk egy űrlapot egy megjegyzés írásához, és magát a kezelő szkriptet. A megjegyzés űrlap HTML-kódja a következő.

Ebben az oktatóanyagban megvizsgáljuk, hogyan lehet adatokat beszúrni az adatbázisba közvetlenül a PHP-szkriptekből.

Adatok beszúrása SQL használatával

Az SQL használatával ugyanúgy szúrhat be adatokat egy adatbázisba, mint az SQL-t adatbázisok és táblák létrehozásához. Az SQL lekérdezés szintaxisa a következő:

INSERT INTO TableName (1. oszlop, oszlop 2, ...) ÉRTÉKEK(érték1, 2. érték,...)

Amint láthatja, egyetlen SQL-utasításban több oszlopot is frissíthet, ha vesszővel elválasztott listában adja meg őket. De természetesen csak egy oszlopot és egy értéket is megadhat. Az adott SQL utasításban nem említett oszlopok üresek maradnak.

Példa: Új személy beszúrása egy táblázatba

Ebben a példában a 18. lecke adatbázisát használjuk. Tegyük fel, hogy be akarunk szúrni egy személyt az adatbázisba. Lehet, hogy Gus Goose telefonszámmal 99887766 és születési dátum 1964-04-20 .

Az SQL utasítás így nézhet ki:

$strSQL = "INSERT INTO people (Keresztnév,Vezetéknév,Telefon,Születési dátum) VALUES("Gus","Goose","99887766 ","1964-04-20")";

Amint látja, az SQL utasítások meglehetősen hosszúak lehetnek, és könnyen elveszíthetjük a nyomot. Ezért jobb, ha az SQL utasítást kissé másképp írjuk:

strSQL = "INSERT INTO people("; strSQL = strSQL. "Keresztnév"; strSQL = strSQL. "Vezetéknév" strSQL = strSQL. "telefon"; strSQL = strSQL. "születés)"; strSQL = strSQL. "VALUES("; strSQL = strSQL . ""Gus", "; strSQL = strSQL. ""Liba", "; strSQL = strSQL. ""99887766", "; strSQL = strSQL. ""1964-04-20")"; mysql_query($strSQL) vagy die(mysql_error());

Itt az SQL utasítás úgy épül fel, hogy a mondatot kis részekre osztjuk, majd ezeket egy változóvá egyesítjük $strSQL.

A gyakorlatban nincs különbség az egyik vagy a másik alkalmazásában, de nagy asztalokkal való munka során rendkívül fontossá válik a „követés” képessége, ezért válasszuk a legmegfelelőbb módszert.

Próbáljuk meg a következő kódot végrehajtani, hogy Gus Goose-t beillesszük az adatbázisba:

Adatok beillesztése az adatbázisba // Csatlakozás az adatbázis-kiszolgálóhoz mysql_connect("mysql.myhost.com", "user", "sesame") vagy die(mysql_error());// Adatbázis kiválasztása mysql_select_db("sajatadatbázis") vagy die(mysql_error()); // SQL utasítás felépítése $strSQL = "INSERT INTO people("; $strSQL = $strSQL . "Keresztnév"; $strSQL = $strSQL . "Vezetéknév"; $strSQL = $strSQL . "telefon"; $strSQL = $strSQL . "Születési dátum)"; $strSQL = $strSQL . "VALUES("; $strSQL = $strSQL . "Gus", "; $strSQL = $strSQL . ""Liba", "; $strSQL = $strSQL . ""99887766", "; $strSQL = $strSQL . ""1964-04-20")"; // Az SQL utasítás végrehajtásra kerül mysql_query($strSQL) vagy die(mysql_error()); // A kapcsolat lezárása mysql_close(); ?>

DB frissítve!

Felhasználói bevitel mentése a DB-be

Valószínűleg már rájöttél, hogy készíthetsz ehhez űrlapot, mint a 11. leckében, és az űrlap értékeit beillesztheted az SQL utasításba. Tegyük fel, hogy van egy egyszerű űrlapod:

Ezt az űrlapot fájlba küldik be insert.php ahol a 11. leckében látható módon az űrlap tartalmának lekérésével felhasználói bevitelt kaphat. Ebben a konkrét esetben az SQL utasítás a következő lehet:

strSQL = "INSERT INTO people(FirstName) values("" . $_POST["FirstName"] . "")"

Hasonlóképpen kérhet adatokat cookie-khoz, munkamenetekhez, lekérdezési karakterláncokhoz stb.

A kezdők leggyakoribb hibái

Először valószínűleg egy csomó hibaüzenetet fog kapni, amikor megpróbálja frissíteni az adatbázist. Ha adatbázissal dolgozik, semmiféle hiba abszolút elfogadhatatlan. A helytelenül elhelyezett vessző azt jelentheti, hogy az adatbázis nem frissül, és hibaüzenetet fog kapni. Az alábbiakban a leggyakoribb hibákat ismertetjük.

Érvénytelen adattípus

Fontos, hogy az oszlop adatai és adattípusa megegyezzen. Minden oszlop adott típusú adatokat tartalmazhat. A következő képernyőkép a példánkból származó "emberek" tábla adattípusait mutatja.

Hibaüzenet jelenik meg, ha például szöveget vagy számot próbál beszúrni egy adatmezőbe. Ezért állítsa be a lehető legpontosabban az adattípust.

A leggyakrabban használt adattípusok az alábbiak:

Jelentése Adattípus A méret
CHR
Szöveg vagy szöveg és számok kombinációja. Számításoknál nem használt számokhoz is használható (pl. telefonszámok). Legfeljebb 255 karakter – a „Length” részben megadott hosszúság bármelyike
SZÖVEG
Nagy szövegtömbök vagy szöveg és számok kombinációja. Legfeljebb 65 535 karakter
INT
Numerikus adatok matematikai számításokhoz. 4 bájt
DÁTUM
Dátumok ÉÉÉ-HH-NN formátumban 3 bájt
IDŐ
Idő óó:pp:ss formátumban 3 bájt
DÁTUM IDŐ
Dátum és idő ÉÉÉ-HH-NN óó:pp:pp formátumban 8 bájt

SQL-utasítások idézőjelekkel vagy fordított perjelekkel

Ha egyszeres idézőjeleket ("), kettős idézőjeleket (") vagy fordított perjel karaktereket (\) tartalmazó szöveget próbál beszúrni, a rekord nem kerül be az adatbázisba. A megoldás az, hogy az adatbázis-lekérdezésekbe beillesztendő karakterek előtt fordított perjeleket kell helyettesíteni.

Ebben a cikkben elemezzük talán az egyik legfontosabbat SQL lekérdezések. azt lekérdezések rekordok hozzáadásához és törléséhez egy adatbázistáblában. Mert NAGYON gyakran új rekordok hozzáadása a táblázathoz, és ezt automatikusan meg kell tenni, akkor ezt az anyagot tanulmányozni kell.

Kezdeni SQL-lekérdezés új rekord hozzáadásához a táblához:

INSERT INTO felhasználók (bejelentkezés, belépő) értékek ("TestUser", "123456")

Rekord hozzáadásakor az első parancs a " INSERT INTO", majd annak a táblának a neve, amelybe a rekordot beszúrjuk. Utána jön a kitölteni kívánt mezők nevei zárójelben. Majd zárójelben a " szó után értékeket"Elkezdjük listázni az általunk kiválasztott mezők értékeit. A lekérdezés végrehajtása után egy új rekord jelenik meg a táblázatunkban.

Néha szükséges frissítse a táblázat bejegyzését, erre van a következő SQL lekérdezés:

UPDATE felhasználók SET login = "TestUser2", pass="1234560" WHERE login="TestUser"

Ez a lekérdezés összetettebb, mivel a " AHOL", de erről egy kicsit lejjebb. Először jön a parancs" FRISSÍTÉS", majd a tábla neve, majd a " KÉSZLET"Minden mező értékét leírjuk, amelyen változtatni szeretnénk. Egyszerű lenne, de felmerül a kérdés:" Melyik bejegyzést kell frissíteni?". Ehhez van " AHOL". Ebben az esetben frissítjük a rekordot, a mezőt Belépés"ami számít" TestUser". Felhívjuk figyelmét, hogy ha több ilyen rekord van, akkor minden frissül! Ezt nagyon fontos megérteni, különben a táblázat elvesztését kockáztatja.

Beszéljünk egy kicsit bővebben AHOL". Az egyszerű egyenlőségellenőrzések mellett vannak egyenlőtlenségek, valamint logikai műveletek is: ÉSés VAGY.

UPDATE felhasználók SET login = "TestUser2", pass="1234560" WHERE id< 15 AND login="TestUser"

Az SQL lekérdezés frissíteni fogja ezeket a rekordokat id amelyek kevésbé 15 És terület " Belépés"jelentése van" TestUser". Remélem, rájöttél a tervezésre" AHOL"mert ez nagyon fontos. Pontosan" AHOL" akkor használatos, amikor rekordok lekérése táblázatokból, és ez a leggyakrabban használt feladat az adatbázisokkal való munka során.

És végül egyszerű SQL lekérdezés rekordok táblából való törléséhez:

DELETE FROM felhasználók WHERE login="TestUser2"

parancs után" TÖRLÉS FOL" megy annak a táblának a neve, amelyben törölni szeretné a rekordokat. Ezután leírjuk a "WHERE" konstrukciót. Ha a rekord megfelel a leírt feltételeknek, akkor törlődik. Ismét figyeljen, a rekordok számától függően amelyek megfelelnek a következő feltételnek: AHOL", tetszőleges számú eltávolítható belőlük.

Ebben a bejegyzésben szeretném elmondani hogyan kell átvinni az adatbázisba a bevitt adatokat az űrlapon. Így létrehozunk egy egyszerű űrlapot, ahol két mezőnk lesz: a felhasználónév és az e-mail címe:

A neved:
Az email címed:


Ezen az űrlapon lehet új felhasználót regisztrálni, hírt küldeni, statisztikákat gyűjteni, és bármire... Általánosságban elmondható, hogy a felhasználó ezt az űrlapot kitölti az adataival: név és postacím, rákattint a gombra, majd az adatok bemegy a php szkriptbe:

$név = $_POST["név"]; $email = $_POST["e-mail"]; $result = mysqli_query("INSERT INTO user (név, email) VALUES ("$név", "$e-mail")"); if ($result) ( echo "Az adatok sikeresen mentve!"; ) else ( echo "Hiba történt, próbáld újra."; )


Mi történik ebben a forgatókönyvben? Most találjuk ki!
Az űrlapba bevitt adatok POST metódussal átkerülnek a php scriptbe (ami fent van írva), a $_POST globális tömb segítségével pedig a $name és $email változókba formálódnak az adatok:

$név = $_POST["név"]; $email = $_POST["e-mail"];


Miután a változók készen állnak az adatbázisba való bevitelre, összeállítunk egy lekérdezést. De először a szkriptjeidnek már csatlakozniuk kell az adatbázishoz, az adatbázishoz való csatlakozás módját írtam ebben a szálban:. Maga a kérés így néz ki:

$result = mysqli_query("INSERT INTO user (név, email) VALUES ("$név", "$e-mail")");


Ebben a kódban jeleztük, hogy a következő változók kerülnek hozzáadásra a felhasználói táblázatban található név és e-mail cellákhoz: $name és $email .
Továbbá, ha minden jól ment, üzenetet kapunk a feltételtől:

Az adatok mentése sikeres volt!


Ha bármilyen probléma adódna és az adatok nem lettek megadva, hibaüzenetet kapunk:

Hiba történt. Kérjük, próbálja újra.


Ez minden!

*** *** *** *** ***

Igény szerint további mezőket is hozzáadhat az adatok megadásához, például a felhasználó városának megadásához szükséges mezőt. Már van egy kész szkriptünk (feljebb írva), most csak adunk hozzá egy mezőt Városod, nevezzük el a változót: $city . És így az adatbeviteli űrlapon, miután:

Az email címed:


add hozzá:

Városod:


A php scriptben a következő után:

$email = $_POST["e-mail"];


add hozzá:

$város = $_POST["város"];


És természetesen ezt is hozzáadjuk a kéréshez, így:

$eredmény = mysqli_query("INSERT INTO user (név, email, város) ÉRTÉKEK ("$név", "$e-mail", "$város")");


Íme, mi legyen a végeredmény:
Beviteli űrlap:

A neved:
Az email címed:
Városod:


Forgatókönyv:

$név = $_POST["név"]; $email = $_POST["e-mail"]; $város = $_POST["város"]; $eredmény = mysqli_query("INSERT INTO user (név, email, város) ÉRTÉKEK ("$név", "$e-mail", "$város")"); if ($result == true) ( ​​echo "Az adatok sikeresen mentve!"; ) else ( echo "Hiba történt, próbáld újra."; )


Amint látja, semmi bonyolult! Ha szükséges, hozzáadhat még egy mezőt, még egyet, és még egyet...
Hasonló hozzászólások