Ebben a cikkben megvizsgáljuk, hogyan lehet PHP-vel sorokat beszúrni egy MySQL adatbázisba.

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

Először létre kell hoznia egy táblázatot az adatokhoz. Ez egy egyszerű eljárás, amellyel elvégezhető a phpMyAdmin használatával a hosting vezérlőpulton.

A phpMyAdminba való bejelentkezés után egy ehhez hasonló felületet fog látni:

Hozzon létre egy Diákok nevű táblát az u266072517_name adatbázisban a "Táblázat létrehozása" gombra kattintva. Utána meglátjuk új oldal, amelyen beállítjuk az összes szükséges táblázatparamétert:

Ez a legegyszerűbb beállítás, amely asztalhoz és gethez használható további információ táblák/adatbázisok szerkezetéről.

Oszlopopciók:

  • A név a táblázat tetején megjelenő oszlop neve.
  • A típus az oszlop típusa. Például a varchart választottuk, mert karakterlánc-értékeket fogunk beírni.
  • Hossz/Értékek – az ebben az oszlopban lévő bejegyzés maximális hosszának meghatározására szolgál.
  • Index – „Elsődleges” indexet használtunk az „azonosító” mezőhöz. Táblázat létrehozásakor ajánlatos csak egy oszlopot használni elsődleges kulcsként. A rekordok táblázatban történő felsorolására szolgál, és a táblázat összeállításakor szükséges. Megjelöltem az "A_I"-t is, ami az "Auto Increment" rövidítése - a rekordok számának automatikus hozzárendelése (1,2,3,4...).
    Kattintson a Mentés gombra, és létrejön a táblázat.

2. lépés: PHP kód írása az adatok MySQL-be ​​való beillesztéséhez.

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

Először létre kell hoznia egy kapcsolatot az adatbázissal. Ezt követően az SQL INSERT lekérdezést használjuk. Példa a teljes kódra:

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

A kód első része (3-18. sor) az adatbázishoz való csatlakozásra szolgál.

Kezdjük a 19. sorral:

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

Adatokat szúr be MySQL adatbázis. Az INSERT INTO egy olyan utasítás, amely adatokat ad hozzá a megadott táblához. Példánkban az adatok hozzáadódnak a Diákok táblához.

Ezután következik azoknak az oszlopoknak a felsorolása, amelyekbe az értékeket beillesztik: név, vezetéknév, e-mail. Az adatok a megadott sorrendben kerülnek hozzáadásra. Ha írtunk volna (e-mail, vezetéknév, név), akkor az értékek más sorrendben lettek volna hozzáadva.

A következő rész az ÉRTÉKEK utasítás. Itt adjuk meg az oszlopok értékeit: name = Thom, lastname = Vial, email = [e-mail védett]

Lekérdezést futtattunk PHP kóddal. NÁL NÉL programkód Az SQL lekérdezéseket idézőjelekkel kell megszabadítani. A kód következő része (20-22. sor) ellenőrzi, hogy kérésünk sikeres volt-e:

if (mysqli_query($conn, $sql)) ( echo "Új rekord sikeresen létrehozva"; )

Ez a kód egy üzenetet jelenít meg, hogy a kérés sikeres volt.

És az utolsó rész (22-24. sor) értesítést jelenít meg, ha a kérés nem volt sikeres:

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

2. lehetőség – PHP Data Object Method (PDO)

Először csatlakoznunk kell az adatbázishoz egy új PDO objektum létrehozásával. Amikor dolgozunk vele, használni fogjuk különféle módszerek OEM. 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 "javítja" futás előtt. Például a legegyszerűbb SQL injekciós támadás végrehajtható úgy, hogy egyszerűen beírja az SQL kódot egy űrlapmezőbe. Például:

Mivel ez szintaktikailag helyes SQL, a pontosvessző a DROP DATABASE user_table-t új SQL lekérdezéssé teszi, és a felhasználói tábla eldobásra kerül. Az előkészített kifejezések (kötött változók) nem teszik lehetővé, hogy pontosvessző és idézőjel fejezze be az eredeti lekérdezést, ezért a DROP DATABASE parancs soha nem kerül végrehajtásra.

Az előkészített utasítások használatához új változót kell írnunk, amely meghívja az adatbázis-objektum ready() metódusát.

Helyes kód:

getMessage(); ) // Változók beállítása az adatbázishoz hozzáadni kívánt személyhez $first_Name = "Thom"; $last_Name = "Fiola"; $email = " [e-mail védett]"; // Hozzon létre egy változót, amely meghívja az adatbázis objektum előkészítő() metódusát // A végrehajtani kívánt SQL lekérdezés paraméterként kerül megadásra, és a helyőrzők így íródnak: placeholder_name $my_Insert_Statement = $my_Db_Connection->prepare( "INSERT INTO Students ( név, vezetéknév, e-mail) VALUES (:first_name, :last_name, :email)"); // Most megmondjuk a szkriptnek, hogy az egyes helyőrzők melyik változóra hivatkoznak a bindParam() metódus használatához // A Az első paraméter a fenti utasításban szereplő helyőrző , a második az a 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->bindStatement-> (:email, $email); // A lekérdezés végrehajtása az általunk definiált adatokkal // Az execute() metódus TRUE értéket ad vissza, ha sikerült, és FALSE értéket, ha nem, így ki kell nyomtatnia a saját üzenetét, ha ($my_Insert_Statement ->execute()) ( echo "New reco rdcreatedsuccessfully"; ) else ( echo "Nem lehet rekordot létrehozni"; ) // Ezen a ponton megváltoztathatja a változó adatait, és lekérdezést futtathat további adatok hozzáadásához az adatbázis adataihoz $first_Name = "János"; $last_Name = "Smith"; $email = " [e-mail védett]"; $my_Insert_Statement->execute(); // Végrehajtás újra a változó megváltoztatásakor if ($my_Insert_Statement->execute()) ( echo "Új rekord sikeresen létrehozva"; ) else ( echo "Nem lehet rekordot létrehozni";

A 28., 29. és 30. sorban az adatbázis-objektum bindParam() metódusát használjuk. Létezik egy bindValue() metódus is, ami nagyon eltér az előzőtől.

  • bindParam() – Ez a metódus az execute() metódus elérésekor értékeli ki az adatokat. Amikor a szkript először eléri az execute() metódust, azt látja, hogy a $first_Name egyezik a "Thom"-val. Ezután megköti ezt az értéket, és lefuttatja a lekérdezést. Amikor a szkript eléri a második execute() metódust, azt látja, hogy a $first_Name most megegyezik a "Jánossal". Ezután megköti ezt az értéket, és újra futtatja a lekérdezést új értékekkel. Fontos megjegyezni, hogy egyszer definiáltunk egy lekérdezést, és a szkript különböző pontjain különböző adatokkal újra felhasználtuk.
  • bindValue() – Ez a metódus kiértékeli az adatokat, amint a bindValue() elérésre kerül. Mivel a $first_Name beállítása "Thom", a bindValue() elérésekor a rendszer minden alkalommal használni fogja a $my_Insert_Statement execute() metódusát.
    Vegye figyelembe, hogy újra felhasználjuk a $first_Name változót, és másodszor is új értéket rendelünk hozzá. A szkript futtatása után mindkét név megjelenik az adatbázisban, annak ellenére, hogy a szkript végén található $first_Name változó "János" értékű. Ne feledje, hogy a PHP a teljes szkriptet ellenőrzi, mielőtt futtatná.

Ha frissíti a szkriptet, hogy a bindParam-ot bindValue-ra cserélje, akkor kétszer be kell illesztenie a „Thom Vial” szót az adatbázisba, és John Smith figyelmen kívül marad.

3. lépés – Erősítse meg a sikert és oldja meg a problémákat

Ha a sorok adatbázisba történő beszúrására vonatkozó kérés sikeres volt, a következő üzenetet fogjuk látni:

Gyakori hibák hibaelhárítása

MySQLi

Minden más esetben hibaüzenet jelenik meg. Például csináljunk egy szintaktikai hibát a kódban, és a következőket kapjuk:

A kód első része rendben van, a kapcsolat létrejött, de az SQL lekérdezés meghiúsult.

"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önyvet a "(név, vezetéknév, e-mail) VALUES ("Thom", "Vial", ") közelében használandó jogszintaxishoz [e-mail védett]")" az 1. sorban"

Szintaktikai hiba lépett fel, ami miatt a szkript meghiúsult. A hiba itt volt:

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

A normál fogszabályzó helyett göndör fogszabályzót használtunk. Ez helytelen, és a szkript szintaktikai hibát adott.

OEM

A PDO kapcsolat 7. sorában a hibamód "minden kivétel megjelenítése"-re van beállítva. Ha más értéket állít be, és a kérés sikertelen lenne, nem kapunk hibaüzenetet.

Ezt a beállítást csak szkript fejlesztésekor szabad használni. Ha engedélyezve van, megjelenhetnek az adatbázis- és táblanevek, amelyeket biztonsági okokból a legjobb rejteni. A fent leírt esetben, amikor a szokásos zárójelek helyett göndör zárójeleket használtak, a hibaüzenet így néz ki:

Végzetes hiba: Uncaughtexception "PDOException" a következő üzenettel: "SQLSTATE: Syntax error or accessviolation: 1064 Hiba van az SQL szintaxisában; ellenőrizze a MySQL-kiszolgáló verziójának megfelelő kézikönyvben a "(név, vezetéknév, e-mail) VALUES ("Thom", "Vial", ") közelében használandó jogszintaxist [e-mail védett]")" az 1. sorban"

Egyéb lehetséges problémák:

  • Az oszlopok hibásan vannak megadva (nem létező oszlopok vagy helyesírási hiba a nevükben).
  • Az egyik típusú érték egy másik típusú oszlophoz van hozzárendelve. Például, ha megpróbálja beszúrni a 47-es számot a Név oszlopba, hibaüzenetet fog kapni. Ennek az oszlopnak karakterlánc-értéket kell használnia. De ha egy számot idézőjelben adnánk meg (például "47"), akkor működne, mert ez egy karakterlánc.
  • Nem létező táblába próbáltak adatokat bevinni. Valamint egy helyesírási hiba a tábla nevében.

Az adatok sikeres bevitele után látni fogjuk, hogy felkerültek az adatbázisba. Az alábbiakban egy példa látható egy táblázatra, amelyhez adatokat adtak hozzá.

A szerzőtől:ó, nem lehet szavakat kidobni egy dalból! De mások törölhetik, frissíthetik vagy beilleszthetik őket. A lényeg az, hogy a szavak bekerüljenek az adatbázisba. Ma elmondjuk, hogyan íródnak az adatok a MySQL-be, és hogyan kell helyesen csinálni, hogy a dal megszólaljon!

Bejegyzések hozzáadása a phpMyAdmin segítségével

A MySQL DBMS adminisztrálására szolgáló phpMyAdmin shell egy „könnyű” funkciót valósít meg új rekordok adatbázistáblákhoz való hozzáadásához. Egyszerűsége miatt ideális zöld "babák" és "lusta" szakemberek számára egyaránt.

Ha új információkat szeretne bevinni a táblázatba, a programot rendszergazdai jogokkal kell beírnia. Ezután a bal oldali listákban válassza ki a kívánt adatbázist és táblát. Ezután a felső menüben lépjen a "Beszúrás" elemre.

Ezt követően a MySQL adatbázisban való rekord létrehozásához töltse ki a következő ablakot az "Érték" mező összes oszlopához, és kattintson az "OK" gombra alul.

A fenti képernyőképen látható, hogy a módosított "Állatok" táblázat két oszlopból (mezőből) áll: azonosító és név. A második szakasz az egyes oszlopok típusát határozza meg. A név mezőbe csak egy értéket kell megadnunk, mivel az id oszlop az elsődleges kulcs, és a táblázat létrehozásakor automatikus növekedésre volt beállítva. Ez azt jelenti, hogy az id mező értékét a MySQL automatikusan generálja, hozzáadva 1-et az előző egész értékhez.

Ha meg szeretné tudni, hogy a MySQL-ben az adatrekordok melyik mezője az elsődleges kulcs (elsődleges kulcs), a phpMyAdminban lépjen a menübe (a listában a kiválasztott táblával a bal oldalon) a felső menü "Struktúra" lapjára. Itt található a táblázat összes mezőjének leírása, azok típusa és további jellemzői.

Adatok beszúrása SQL lekérdezések segítségével

De a phpMyAdmin csak egy wrapper, és az igazi rendszergazdák Structured Query Language segítségével "beszélgetnek" a MySQL szerverrel. Vagyis SQL nyelven „beszélgetnek” vele. Mivel igazi profivá törekszünk, a vizsgált téma keretein belül kicsit „elmerülünk” az SQL parancsok tanulmányozásában. Itt van egy lekérdezés, amelyet az "SQL" mezőbe beírva ugyanazt az adatbázist hozzuk létre:

TÁBLÁZAT LÉTREHOZÁSA Állat (azonosító KÖZEPES NEM NULL AUTO_INCREMENT, név CHAR(30) NEM NULL, ELSŐDLEGES KULCS (id));

TÁBLÁZAT LÉTREHOZÁSA Állat (ID MEDIUMINT NOT NULL AUTO_INCREMENT ,

név CHAR (30 ) NEM NULL , ELSŐDLEGES KULCS (id ) ) ;

A tábla létrehozása és az adatok MySQL adatbázisba írása után (a "Beszúrás" fülön keresztül) a program tájékoztatja, hogy az állatokhoz egy 1-es azonosító értékű sort adtunk. A szerkesztő ablakban pedig kicsit lejjebb a lekérdezési kód jelenik meg, amelyet a shell generált számunkra és elküld az adatbázis-kiszolgálónak.

Kérési kód:

INSERT INTO `my_db1`.`animal` (`id`, `name`) ÉRTÉKEK (NULL, "Cat");

INSERT INTO `my_db1`. ` állat ` (` azonosító ` , ` név ` ) ÉRTÉKEK (NULL , "Macska" ) ;

Tanulmányozzuk részletesebben. Az SQL az INSERT utasítást használja egy új sor beszúrásához a táblába. Közli a szerverrel, hogy az adatbázistáblában (my_db1 . animal) be kell illesztenie a megadott értékeket az id és név mezőkbe (VALUES (NULL, 'Cat').

Kérjük, vegye figyelembe, hogy az id oszlophoz nem numerikus értéket adunk meg, hanem NULL-t, mivel ennél a mezőnél „engedélyeztük” az automatikus kiegészítést (autoncrement).

Hogyan lehet beszúrni egy bejegyzést PHP segítségével

Minden, amit figyelembe vettünk, csak „előjáték” a fő akcióhoz, amelyben „Őfelsége” a PHP szerveroldali programozási nyelv lép színre. Neki köszönhető, hogy a MySQL mint DBMS olyan széles körben elterjedt a weben.
A világháló nagy része erre a két internetes technológiára épül. Bármerre néz, mindenhol megtalálja őket: a modern CMS-ben, "saját írt" motorokban és a szerveren.

Nem meglepő, hogy a PHP olyan sok beépített funkciót biztosít az adatok MySQL-be ​​írásához. De ezek közül a legfontosabbakra fogunk összpontosítani. Itt van a kód, amely egy új "állatot" ad hozzá az állatok táblázatához. Ha keményen próbálkozol, akkor így egy egész menazsériát gyűjthetsz össze :)

$con_str=mysql_connect("localhost", "root", "", "db1"); if(mysql_connect("localhost","root"))( echo "Hello!!!"; ) mysql_select_db("db1",$con_str); $query_str="INSERT INTO `db1`.`állat` (`id`, `név`) ÉRTÉKEK (NULL, "kutya")"; mysql_query($query_str); mysql_close();

$ con_str = mysql_connect ("localhost" , "root" , "" , "db1" ) ;

if (mysql_connect("localhost" , "root" ) ) (

echo "Helló!! ;

mysql_select_db("db1" , $ con_str ) ;

$query_str= "INSERT INTO `db1`. "animal" ("azonosító", "név") ÉRTÉKEK (NULL, "kutya")";

mysql_query($query_str) ;

mysql_close();

Ezt a kódot be kell illeszteni egy PHP-fájlba, és a szerver oldalon kell tárolni.

A mysql_connect() függvény segítségével csatlakozunk a MySQL adatbázis-kiszolgálóhoz. A függvény argumentumként a gazdagépet, a DBMS-felhasználónevet, a jelszót és a csatlakozáshoz szükséges adatbázis nevét veszi fel. Üres jelszavunk van, mert a helyi (kliens) gépre telepített szervert használunk.

A MySQL adatbázisba PHP-vel való írási példák bemutatására a denveri "úri készletet" használtuk. Tartalmaz egy helyi Apache-kiszolgálót, egy MySQL-kiszolgálót, phpMyAdmin-t és néhány más hasznos kódoló- és tesztelőeszközt.

Ezután a logikai if blokkban ellenőriztük, hogy van-e kapcsolat az adatbázis-kiszolgálóval. Ezt követően a mysql_select_db () függvényben kijelöltük azt a bázist, amelyhez csatlakozni fogunk. A mysql_query() függvény segítségével elindítottuk a $query_str változóra írt SQL lekérdezést. És a végén a létrehozott kapcsolat lezárásra került (mysql_close() függvény). Ha most benézünk menazsériánkba (ételállat), akkor ott új „háziállatot” találunk.

A MySQL-ben való megírásához a PHP "kedvesen" biztosított minden szükséges funkciókészletet. A fő dolog, amibe a kezdők „kiégnek”, amikor SQL-t használnak a programkódban, a lekérdezések helytelen helyesírása, a szintaxis megsértése és a karakterek váltakozása a kilépéshez (idézőjelek).

Annak elkerülése érdekében, hogy extra "szürke" szőrszálak jelenjenek meg a fején, jobb, ha a phpMyAdmin segítségével ellenőrizze a kérés helyesírását. Ehhez helyezze el az SQL kódot a programszerkesztőbe, és futtassa le a végrehajtáshoz. Ha valami nem stimmel, az alkalmazás elkezd „esküdni”, piros üzenetet jelenít meg, és jelzi a hiba helyét.

Amint látja, a MySQL segítségével „összegyűjtheti” menazsériáját, és helyesen megváltoztathatja bármely „dal” szavait. A MySQL adatbázisba való íráshoz pedig a PHP tökéletes, ezért azt tanácsoljuk, hogy kössön "szoros" barátságot ezzel a "nagyszerű" programozási nyelvvel!

És adottak
. És most arról fogunk beszélni, hogyan képek hozzáadása a MySQL adatbázishoz PHP használatával űrlapon keresztül.

Mező létrehozása a MySQL adatbázisban kép hozzáadásához

Kezdésként azt szeretném elmondani képek tárolása MySQL adatbázisban meg kell határozni a tábla egyik mezőjét a BLOB típusból származtatva.

A BLOB rövidítés a Binary Large Object rövidítése. A BLOB adattárolási típusnak több lehetősége van:

  • TINYBLOB - Akár 255 bájt tárolására képes
  • A BLOB legfeljebb 64 kilobájtnyi információt képes tárolni
  • MEDIUMBLOB - akár 16 megabájt
  • LONGBLOB akár 4 gigabájtig

Mert a képfájl tárolása az adatbázisban be kell olvasnia a fájlt egy változóba, és létre kell hoznia egy lekérdezést, hogy adatokat adjon a táblához.

Űrlap előkészítése egy oldalon kép hozzáadásához egy MySQL adatbázishoz

Az én esetemben a feladat az volt két kép hozzáadása az adatbázishoz PHP segítségével. Van egy űrlapunk két mezővel és egy elküldés gombbal:

form name="form1" method="post" action="add_image.php"
enctype="multipart/form-data"

Emlékezzünk arra, hogy az attribútum akció megadja a fájlt, amely betölti a képfájlokat. Tulajdonság enctype meghatározza az űrlap tartalmának kódolási módját és a fájlfeltöltésekkel kapcsolatos információkat. Nézze meg, hogyan kell helyesen kitölteni az attribútumot enctype elkerülni .

Jegyzet: A 3.0.10-es verzióban bevezették a több fájl feltöltésének támogatását.

PHP kód írása a kép MySQL adatbázisba mentéséhez

Mivel két fájlt küldünk az attribútumban név a szó után szögletes zárójelben jelöljük a „felhasználói fájlt”, ezzel egyértelművé tesszük, hogy több fájlt küldünk egy fájlattribútumokat tartalmazó tömb segítségével:

$_FILES['felhasználói fájl']['név']

Az eredeti fájlnév az ügyfélgépen.

$_FILES['felhasználói fájl']['típus']

a fájl MIME típusát, ha a böngésző megadta ezt az információt.
Példa: "image/gif" .

$_FILES['felhasználói fájl']['méret']

$_FILES['userfile']['tmp_name']

Ideiglenes fájlnév, amellyel a feltöltött fájl a szerverre mentve lett.

Hogyan lehet lekérni az egyes fájlok értékeit?

Tegyük fel például, hogy a /home/test/1.jpg és a /home/test/2.jpg nevű fájlokat küldi el.

Ebben az esetben $_FILES['userfile']['name']
az 1.jpg értéket fogja tartalmazni,
és $_FILES['felhasználói fájl']['név']
- érték 2.jpg

Hasonlóképpen, a $_FILES['userfile']['size'] az 1.jpg fájlméretet fogja tartalmazni, és így tovább. Most vegyük figyelembe az add_image.php fájl kódját, amelyet a form attribútumban adtunk meg akció.

1024*1024||$image_size==0) ( $ErrorDescription="Egy kép nem haladhatja meg az 1 Mb-ot! A kép nem adható hozzá az adatbázishoz."; return ""; ) // Ha a fájl megérkezett, ellenőrizze, hogy a grafika // it (biztonsági okokból) if(substr($_FILES["userfile"]["type"][$num], 0, 5)=="image") ( //Olvassa el a fájl tartalmát $image=file_get_contents($_FILES ["userfile"]["tmp_name"][$num]); //Escape speciális karakterek a fájltartalomban $image=mysql_escape_string($image); return $image; )else( ErrorDescription=" Nem töltöttél fel képet, ezért nem adható hozzá."; return ""; ) )else( $ErrorDescription="Nem töltöttél fel képet, a mező üres, így a fájl nem adható hozzá az adatbázishoz. "; return ; ) return $image; ) ?>

Tehát ebben a cikkben arról beszéltünk, hogyan lehet képet menteni egy MySQL adatbázisba. , PHP használatával.

Utolsó frissítés: 2015.11.1

Adatok hozzáadásához az "INSERT" kifejezést kell használni:

$query ="INSERT INTO Goods VALUES(NULL, " Samsung Galaxy III","Samsumg")";

Az "INSERT" utasítás egy sort szúr be a táblázatba. Után kulcsszó Az INTO megadja a táblázat nevét, az ÉRTÉKEK után pedig zárójelben az összes oszlop értékkészlete. Mivel a táblázatban három oszlop van, három értéket adunk meg.

Mivel az előző témakörben a táblázat készítésekor a következő oszlopsorrendet adtuk meg: id, név, cég, ebben az esetben az id oszlopnál NULL, névnél "Samsung Galaxy III", cégnél "Samsumg" adható meg. .

Mivel az id oszlop AUTO_INCREMENT-ként van definiálva, nem kell konkrét numerikus értéket adnunk hozzá, és átadhatunk NULL értéket, és a MySQL a következő elérhető értéket rendeli hozzá az oszlophoz.

Most nézzük meg az adatok hozzáadását egy példa segítségével. Hozzunk létre egy fájlt create.php a következő tartalommal:

Adatok hozzáadva"; ) // kapcsolat bezárása mysqli_close($link); ) ?>

Új modell hozzáadása

Írja be a modellt:

Gyártó:

Itt az adatbázissal való interakció kódja kombinálódik az űrlapok funkcionalitásával: az űrlap segítségével adatokat adunk meg, amelyeket az adatbázishoz kell hozzáadni.

Biztonság és MySQL

Itt a mysqli_real_escape_string() függvényt használtuk. Arra szolgál, hogy kikerüljenek a karakterláncok karaktereiből, amelyeket aztán egy SQL-lekérdezésben használnak. Paraméterként egy kapcsolódási objektumot és egy karakterláncot vesz igénybe, amelyet meg kell szüntetni.

Így valójában kétszer használjuk a karakteres escape-t: először az sql kifejezéshez a mysqli_real_escape_string() függvény használatával, majd a html-hez a htmlentities() függvény használatával. Ez lehetővé teszi számunkra, hogy egyszerre kétféle támadástól védjük meg magunkat: az XSS-támadásoktól és az SQL-injekcióktól.

A megjegyzések átkerültek a blogból

SZERGEJ
2016. 09. 14. 01:25-kor
Jó napot!
Érdekel a kérdés: hogyan lehet a legegyszerűbben megszervezni az adatok és a programbeállítások tárolását adatbázis használata nélkül? Ne akarj a MySQL-hez vagy az Accesshez kötődni.

ADMIN
2016. 09. 14. 22:14-kor
Szia!

Tulajdonságok. Beállítások
App.Config
XML fájl
sorozatosítás
Próbáljon ki egyet ezek közül a listából.

NIKOLAI
2016. 09. 16. 02:28-kor
Hello, hogyan tudom törölni a kiemelt sort a dataGridVIew-ben a dataGridVIew és a phpMyAdmin programból.

PhpMyAdmin? Ez csak egy shell az adatbázissal való munkához, elmagyaráznád?

NIKOLAI
2016.09.18., 02:24
szükséges, hogy a kiválasztott sort töröljük a DataGridView-ból és az adatbázisból.

ADMIN
2016. 09. 19. 07:00 órakor
Hogyan lehet törölni egy sort az adatbázisban mysql adatok hozzáadott egy cikket.

NIKOLAI
2016.09.20., 09:20
Nagyon köszönöm.

DIMA
2016.09.20., 10:24
Szia, tudsz Ily módon nem DataGridView-n, hanem ComboBoxon keresztül valósítani? Ha igen, hogyan? Köszönöm.

ADMIN
2016.09.22., 03:21
Szia. Példa:

GENNADY
2016. 09. 22. 18:25-kor
miért kell ilyen szöveget hozzáadnom az adatbázishoz System.Windows.Forms.TextBox, Szöveg: ge

Amúgy ezt (ge) a végére a gén írja, pedig a szöveg a táblázatbeállításokban meg van adva.A gén szavának tovább kellett volna illeszkednie, megjelenítem ezt a táblázatot a programomban és kiderül hogy ezt a sok felesleges szöveget megjeleníti számomra

ADMIN
2016. 09. 24. 04:17-kor
Valószínűleg az SQL lekérdezés helytelenül van megírva, például:

A textBox1-be írjuk be a nevet: Gene.

Sql lekérdezés: "Beszúrás a táblanévbe értékek(textBox1, ..)"; Eredmény: System.Windows.Forms.TextBox

És át kell adnia: "Insert into table name values(textBox1.Text, ..)";
Eredmény: Gena

GENNADY
2016. 09. 24. 18:41-kor
Ez így van. Kösz

SZERGEJ
2016. 09. 25. 11:51-kor
Szia. És hogyan kell megvalósítani az adatbázishoz való hozzáadást a textBoxon keresztül?

ADMIN
2016.09.26., 20:53
Elvileg minden ugyanaz. Vegyük például a legújabb példát, amelyre szüksége van:

//paraméterek létrehozása és hozzáadása a gyűjteményhez cmd.Parameters.AddWithValue("@Name", textBox1.Text); cmd.Parameters.AddWithValue("@LastName", textBox2.Text);

most a Név és Vezetéknév paraméterek megkapják a szövegmezőkbe beírt értékeket, és átadják az adatbázisnak

LINARA
2016. 09. 27. 17:45-kor
Helló, hogy van a kiemelt sor a dataGridVIew és a phpMyAdmin programban?

ADMIN
2016. 09. 29. 02:06 órakor
Nem tudom, hogy lehet sort kijelölni a phpMyAdminban. A dataGridView-ban pedig ezt például a SelectionChanged esemény segítségével lehet megtenni.

PSH
2016. 09. 30. 03:48-kor
2Linara:
Ha valóban sorokat szeretne szerkeszteni, vegyen egy eszközt a HediSQL-hez, módosítsa és módosítsa a sorokat.

2 admin
Jó nap! Köszönöm az anyagokat - minden nagyon hűvösen le van írva)
Kérdés: Adatokat adok hozzá a következő kéréssel (ez egy teszt):

String sql = "INSERT INTO Users ("FIO", "Utazás", "Szám", "Költség", "Dátum", "Útlevél", "Születés") ÉRTÉKEK ("Kolyan", "Moszkva", "1+1" ", 1100, "2011-11-11", "1111 1111", "11/9/1900");";

Az adatok rendben vannak megadva, de az adatbázisban (mysql) a cirill helyett „????”-nak bizonyulnak.

vizuális Stúdió azt mondja, hogy a System.String egy Unicode sorozat.

Kipróbált még:

ALTER DATABASE `teszt` COLLATE "koi8r_general_ci"; ALTER TABLE `users` COLLATE="koi8r_general_ci"; ALTER DATABASE `teszt` COLLATE "utf8_unicode_ci"; ALTER TABLE `users` COLLATE="utf8_unicode_ci";

De nem segít..
Mi lehet a baj? Különböző VS és DB kódolások? Vagy mi?
El tudnám küldeni, hogy mit kell olvasni/változtatni.
Kösz

ADMIN
2016.10.01., 09:49
Szia.

A DB-ben (és a táblázatban) az utf_general_ci leválogatás

Van ilyen összehasonlítás? Talán utf8_general_ci?

Általában az utf8_general_ci összehasonlítással hoznak létre Mysql adatbázist, így nincs probléma a cirill ábécével, kivéve persze, ha a szerver nem kap hibákat a klienstől.

Összehasonlításra a COLLATION-t használjuk, de ebben az esetben a kódolás (karakterkészlet) fontos. Ezért először meg kell győződnie arról, hogy megfelelően van beállítva a szerveren, például az utf8-ban, és nem a latin1-ben.

A .net csatlakozón keresztül történő csatlakozáskor (alapértelmezés szerint) a latin1 használatos, ezért néha kifejezetten meg kell adnia az utf8 kódolást a kapcsolati karakterláncban:

MySqlConnection mycon; mycon = new MySqlConnection("szerver=127.0.0.1;uid=vasya;pwd=123;adatbázis=teszt;Charset=utf8;"); //MySqlConnectionStringBuilder: mysqlCSB.CharacterSet = "utf8";

PSH
2016.10.01. 11:34
Igazad van, leírtad magad, utf8_general_ci!
Igen, segített, ;Charset=utf8;
Nagyon szépen köszönjük!

SERGIUS
2016.10.02., 11:02
Köszönöm a működő példát. Kérdés
Létrehoztam egy szövegmezőt, amibe szeretném megadni az adatbázis IP-címét, de nem tudom, hogyan kell ezeket az adatokat itt helyettesíteni

String conStr = " [e-mail védett];user=test;" +
"adatbázis=teszt;jelszó=teszt;";
Kérem, mondja meg, hogyan lehet szövegmezőkből adatokat beilleszteni a Windows űrlapba ebbe a tervbe….

ADMIN
2016.10.03. 11:50
"[e-mail védett];user=...
Általában jobb tulajdonságokat használni egy ilyen karakterlánc helyett, mint ebben a cikkben, vagy a String.Format() metódust

OLGA2203
2017.05.15., 20:14

String Connect = “Szerver=127.0.0.1;Port=3306;Adatbázis=bázis;Adatforrás=localhost;felhasználó=root;”; MySqlConnection con = new MySqlConnection(Connect); con.Open(); //Kapcsolat létrehozása az adatbázissal. MySqlCommand cmd = new MySqlCommand(); cmd.CommandText = @”INSERT INTO tovar(azonosító,kategória,név,védjegy,ár,fotó,méret,szín,anyag,szám) ÉRTÉKEK (@pr, @Kategória, @Név, @védjegy, @ár, @fotó, @Méret, @Szín, @Anyag, @Count)”; cmd.Parameters.AddWithValue("@pr",számláló); cmd.Parameters.AddWithValue(“@Kategória”, comboBox1.SelectedItem.ToString()); cmd.Parameters.AddWithValue("@Name", textBox1.Text); cmd.Parameters.AddWithValue("@TradeMark", textBox2.Text); cmd.Parameters.AddWithValue("@Price", Convert.ToInt32(textBox4.Text)); cmd.Parameters.AddWithValue(“@Photo”, textBox3.Text); cmd.Parameters.AddWithValue("@Size", textBox6.Text); cmd.Parameters.AddWithValue(“@Color”, textBox5.Text); cmd.Parameters.AddWithValue(“@Material”, textBox8.Text); cmd.Parameters.AddWithValue(“@Count”, Convert.ToInt32(textBox7.Text)); cmd.Kapcsolat = con; cmd.ExecuteNonQuery(); MessageBox.Show(“Hozzáadás sikeres”, “Hozzáadás sikeres”, MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

„Az 'ID' oszlop nem lehet nulla” hibaüzenet jelenik meg, eltávolítom az ID oszlop kiegészítését - ugyanezt írják a következő oszlopra stb.
Ha bármilyen konstans értéket megadok zárójelben az ÉRTÉKEK-ben, a sor hozzáadódik az alaphoz.
Mondja meg, kérem, mi a probléma? Pontosan az űrlapon megadott adatokat és értékeket kell beírnom az adatbázisba