Andmete lisamine sql tabelisse php. Andmete lisamine PHP-s

Selles artiklis vaatleme, kuidas kasutada PHP-d ridade sisestamiseks MySQL-i andmebaasi.

1. samm – tabeli loomine

Kõigepealt peate andmete jaoks looma tabeli. See on lihtne protseduur, mida saab teha hostimise juhtpaneeli phpMyAdmini abil.

Pärast phpMyAdminisse sisselogimist näete sellist liidest:

Loome andmebaasis u266072517_name tabeli nimega Õpilased, klõpsates nuppu "Loo tabel". Pärast seda näeme uus leht, millele seadsime kõik vajalikud tabeliparameetrid:

See on kõige rohkem lihtne seadistamine, mida saab kasutada laua ja saada Lisainformatsioon tabelite/andmebaaside struktuuri kohta.

Veeru valikud:

  • Nimi on tabeli ülaosas kuvatava veeru nimi.
  • Tüüp on veeru tüüp. Näiteks valisime varchari, kuna sisestame stringiväärtused.
  • Pikkus/Väärtused – kasutatakse täpsustamiseks maksimaalne pikkus, mis selle veeru kirjel võib olla.
  • Indeks – kasutasime välja "ID" jaoks indeksit "Esmane". Tabeli loomisel on soovitatav kasutada primaarvõtmena ainult ühte veergu. Seda kasutatakse kirjete loetlemiseks tabelis ja see on vajalik tabeli koostamisel. Märkisin ka "A_I", mis tähendab "Auto Increment" - võimalus määrata kirjete arv automaatselt (1,2,3,4...).
    Klõpsake nuppu Salvesta ja tabel luuakse.

Samm 2. PHP koodi kirjutamine andmete sisestamiseks MySQL-i.

1. võimalus – MySQLi meetod

Kõigepealt peate looma ühenduse andmebaasiga. Pärast seda kasutame päringut SQL INSERT. Täieliku koodi näide:

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

Koodi esimene osa (rida 3 - 18) on andmebaasiga ühenduse loomiseks.

Alustame reaga nr 19:

$sql = "SISESTAGE õpilastele (nimi, perekonnanimi, e-post) VÄÄRTUSED ("Thom", "Vial", " [e-postiga kaitstud]")";

See lisab andmed MySQL-i andmebaasi. INSERT INTO on lause, mis lisab andmed määratud tabelisse. Meie näites lisatakse andmed tabelisse Õpilased.

Järgmisena loetletakse veerud, millesse väärtused sisestatakse: nimi, perekonnanimi, e-post. Andmed lisatakse määratud järjekorras. Kui oleksime kirjutanud (e-post, perekonnanimi, nimi), oleks väärtused lisatud teises järjekorras.

Järgmine osa on lause VÄÄRTUSED. Siin täpsustame veergude väärtused: nimi = Thom, perekonnanimi = Vial, email = [e-postiga kaitstud]

Käivitasime päringu PHP koodi abil. Koodis tuleb SQL-päringud paotada jutumärkidega. Koodi järgmine osa (rida 20–22) kontrollib, kas meie taotlus oli edukas:

if (mysqli_query($conn, $sql)) ( kaja "Uus kirjeloodi edukalt"; )

See kood kuvab teate, et taotlus õnnestus.

Ja viimane osa (rida 22–24) kuvab teate, kui taotlus ei õnnestunud:

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

2. valik – PHP andmeobjekti meetod (KPN)

Kõigepealt peame looma ühenduse andmebaasiga, luues uue KPN-objekti. Sellega töötades kasutame erinevaid meetodeid KPN. Objektimeetodeid nimetatakse järgmiselt:

$the_Object->the_Meetod();

KPN võimaldab teil SQL-koodi enne käivitamist "ette valmistada". SQL-päringut hinnatakse ja "parandatakse" enne käivitamist. Näiteks saab lihtsaima SQL-i süstimise rünnaku sooritada lihtsalt SQL-koodi sisestamisega vormiväljale. Näiteks:

Kuna see on süntaktiliselt õige SQL, muudab semikoolon tabeli DROP DATABASE user_table uueks SQL-päringuks ja kasutajatabel jäetakse välja. Ettevalmistatud avaldised (seotud muutujad) ei luba semikoolonite ja jutumärkidega algset päringut lõpetada, mistõttu käsku DROP DATABASE ei käivitata kunagi.

Ettevalmistatud lausete kasutamiseks tuleb kirjutada uus muutuja, mis kutsub välja andmebaasiobjekti meetodi ettevalmistus().

Õige kood:

getMessage(); ) // Määrake muutujad isikule, keda tahame andmebaasi lisada $first_Name = "Thom"; $last_Name = "Viaal"; $email = " [e-postiga kaitstud]"; // Loo muutuja, mis kutsub välja andmebaasiobjekti meetodi ettevalmistus() // SQL-päring, mida soovite käivitada, sisestatakse parameetrina ja kohahoidjad kirjutatakse järgmiselt: kohahoidja_nimi $my_Insert_Statement = $my_Db_Connection->prepare( "INSERT INTO Students (nimi, perekonnanimi, email) VÄÄRTUSED (:eesnimi, :perekonnanimi, :e-post)"); // Nüüd ütleme skriptile, millisele muutujale iga kohahoidja viitab, et kasutada meetodit bindParam() // esimene parameeter on ülaltoodud lause kohatäide, teine ​​on muutuja, mis peaks viitama $my_Insert_Statement->bindParam(:first_name, $first_Name); $my_Insert_Statement->bindParam(:last_name, $last_Name); $my_Insert_Statement->bindParam. (:email, $email); // Käivitage päring, kasutades äsja määratletud andmeid // Meetod execute() tagastab TRUE, kui see õnnestus ja FALSE, kui see ei õnnestunud, jättes teile võimaluse printida oma sõnum, kui ($my_Insert_Statement ->käivita()) ( echo "Uus reco rdcreatedsuccessfully"; ) else ( echo "Rekordit ei saa luua"; ) // Siinkohal saab muuta muutuja andmeid ja käivitada päringu, et lisada andmebaasi andmetele rohkem andmeid $first_Name = "John"; $last_Name = "Smith"; $email = " [e-postiga kaitstud]"; $my_Insert_Statement->execute(); // Käivitage muutuja muutmisel uuesti if ($my_Insert_Statement->execute()) ( echo "Uus kirjeloodi edukalt"; ) else ( echo "Kirjet ei saa luua";

Ridadel 28, 29 ja 30 kasutame andmebaasiobjekti meetodit bindParam(). Samuti on olemas meetod bindValue(), mis erineb oluliselt eelmisest.

  • bindParam() – see meetod hindab andmeid, kui saavutatakse meetod execute(). Esimest korda, kui skript jõuab meetodi execute() juurde, näeb see, et $first_Name vastab "Thomile". Seejärel seob see selle väärtuse ja käivitab päringu. Kui skript jõuab teise execute()-meetodini, näeb see, et $first_Name vastab nüüd "Johnile". Seejärel seob see selle väärtuse ja käivitab päringu uuesti uute väärtustega. Oluline on meeles pidada, et kunagi määratlesime päringu ja kasutasime seda skripti erinevates punktides erinevate andmetega uuesti.
  • bindValue() – see meetod hindab andmeid kohe, kui bindValue() on saavutatud. Kuna $first_Name määrati väärtusele "Thom", kasutatakse bindValue() saavutamisel seda iga kord, kui väljas $my_Insert_Statement kutsutakse välja meetod execute().
    Pange tähele, et me kasutame muutujat $first_Name uuesti ja omistame sellele teist korda uue väärtuse. Pärast skripti käivitamist loetletakse mõlemad nimed andmebaasis, hoolimata asjaolust, et skripti lõpus oleva muutuja $first_Name väärtus on "John". Pidage meeles, et PHP kontrollib kogu skripti enne selle käivitamist.

Kui värskendate skripti, et asendada bindParam väärtusega bindValue, sisestate "Thom Vial" kaks korda andmebaasi ja John Smithi ignoreeritakse.

3. samm – kinnitage edu ja lahendage probleemid

Kui taotlus ridade andmebaasi sisestamiseks õnnestus, näeme järgmist teadet:

Levinud vigade tõrkeotsing

MySQLi

Igal muul juhul kuvatakse veateade. Näiteks teeme koodis ühe süntaksivea ja saame järgmise:

Koodi esimene osa on korras, ühendus loodi edukalt, kuid SQL-päring ebaõnnestus.

"Viga: INSERT INTO Õpilased (nimi, perekonnanimi, e-post) VÄÄRTUSED ("Thom", "Vial", " [e-postiga kaitstud]") Teie SQL-i süntaksis on viga; kontrollige juhendist, mis vastab teie MySQL-i serveri versioonile, et leida õiguste süntaks, mida kasutada "(nimi, perekonnanimi, email) VALUES ("Thom", "Vial", ") läheduses [e-postiga kaitstud]")" real 1"

Tekkis süntaksiviga, mille tõttu skript ebaõnnestus. Viga oli siin:

$sql = "SISESTAGE õpilastele (nimi, perekonnanimi, e-post) VÄÄRTUSED ("Thom", "Vial", " [e-postiga kaitstud]")";

Kasutasime tavaliste breketite asemel lokkis breketeid. See on vale ja skript andis süntaksivea.

KPN

KPN-ühenduse real 7 on tõrkerežiim seatud "kuva kõik erandid". Kui määrati muu väärtus ja taotlus nurjub, ei saaks me veateateid.

Seda sätet tuleks kasutada ainult skripti arendamisel. Kui see on lubatud, võidakse kuvada andmebaaside ja tabelite nimed, mis on turvalisuse huvides kõige parem peidetuna. Ülalkirjeldatud juhul, kui tavaliste sulgude asemel kasutati lokkis sulgusid, näeb veateade välja järgmine:

Saatuslik viga: Uncaughtexception "PDOException" sõnumiga "SQLSTATE: Süntaksiviga või juurdepääsuviga: 1064 Teie SQL-i süntaksis on viga; kontrollige juhendist, mis vastab teie MySQL-i serveri versioonile, et leida õiguste süntaksi, mida kasutada "(nimi, perekonnanimi, email) VÄÄRTUSTE ("Thom", "Vial", " [e-postiga kaitstud]")" real 1"

Muud võimalikud probleemid:

  • Veerud on valesti määratud (olematud veerud või nende nimedes kirjaviga).
  • Ühte tüüpi väärtus määratakse teist tüüpi veerule. Näiteks kui proovite sisestada veergu Nimi numbrit 47, kuvatakse veateade. See veerg peab kasutama stringi väärtust. Aga kui määraksime arvu jutumärkides (näiteks "47"), siis see toimiks, sest see on string.
  • Andmeid üritati sisestada tabelisse, mida pole olemas. Nagu ka kirjaviga tabeli nimes.

Pärast andmete edukat sisestamist näeme, et need on andmebaasi lisatud. Allpool on näide tabelist, kuhu andmed on lisatud.

Selles postituses tahan öelda kuidas kanda andmebaasi sisestatud andmed vormi. Ja nii loome lihtsa vormi, kus meil on kaks välja: kasutajanimi ja tema e-posti aadress:

Sinu nimi:
Sinu email:


Seda vormi saab kasutada uue kasutaja registreerimiseks, uudiste väljasaatmiseks, statistika kogumiseks ja muuks... Üldjuhul täidab kasutaja selle vormi oma andmetega: nimi ja post, klõpsab nupul ja seejärel andmed lähevad php skripti:

$nimi = $_POST["nimi"]; $e-post = $_POST["e-post"]; $result = mysqli_query("INSERT INTO kasutaja (nimi, email) VÄÄRTUSED ("$nimi", "$e-post")"); if ($result) ( echo "Andmed edukalt salvestatud!"; ) else ( echo "Tekkis viga, palun proovi uuesti."; )


Mis selles skriptis toimub? Nüüd mõtleme selle välja!
Vormi sisestatud andmed kantakse php skripti (mis on ülalpool kirjutatud) POST meetodil ning $_POST globaalse massiivi abil vormistatakse andmed muutujateks $name ja $email:

$nimi = $_POST["nimi"]; $e-post = $_POST["e-post"];


Kui muutujad on andmebaasi sisestamiseks valmis, koostame päringu. Kuid kõigepealt peavad teie skriptid olema juba andmebaasiga ühendatud, kuidas andmebaasiga ühendust luua, kirjutasin selles lõimes:. Taotlus ise näeb välja selline:

$result = mysqli_query("INSERT INTO kasutaja (nimi, email) VÄÄRTUSED ("$nimi", "$e-post")");


Selles koodis oleme märkinud, et kasutajate tabelis olevatele nime- ja e-posti lahtritele lisatakse järgmised muutujad: $nimi ja $email .
Lisaks, kui kõik läks hästi, saame tingimuselt teate:

Andmed salvestati edukalt!


Kui ilmnes probleeme ja andmeid ei sisestatud, saame veateate:

Ilmnes viga, proovige uuesti.


See on kõik!

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

Soovi korral saab lisada rohkem välju info sisestamiseks, näiteks peame lisama välja kasutaja linna sisestamiseks. Meil on juba valmis skript (ülal kirjutatud), nüüd lisame lihtsalt välja Sinu Linn, paneme muutujale nimeks: $city . Ja nii andmesisestusvormil pärast:

Sinu email:


lisama:

Sinu Linn:


php-skriptis pärast:

$e-post = $_POST["e-post"];


lisama:

$linn = $_POST["linn"];


Ja loomulikult lisame selle ka päringule, näiteks järgmiselt:

$result = mysqli_query("INSERT INTO kasutaja (nimi, email, linn) VÄÄRTUSED ("$nimi", "$e-post", "$linn")");


Lõpptulemus peaks olema järgmine:
Sisestusvorm:

Sinu nimi:
Sinu email:
Sinu Linn:


Skript:

$nimi = $_POST["nimi"]; $e-post = $_POST["e-post"]; $linn = $_POST["linn"]; $result = mysqli_query("INSERT INTO kasutaja (nimi, email, linn) VÄÄRTUSED ("$nimi", "$e-post", "$linn")"); if ($result == true) ( ​​echo "Andmed edukalt salvestatud!"; ) else ( echo "Tekkis viga, palun proovi uuesti."; )


Nagu näete, pole midagi keerulist! Vajadusel saate lisada veel ühe välja ja veel ühe ja veel ühe ...

Selles artiklis analüüsime võib-olla ühte kõige olulisemat SQL päringud. See päringud kirjete lisamiseks ja kustutamiseks andmebaasi tabelist. Sest VÄGA sageli lisage tabelisse uusi kirjeid ja tehke seda automaatselt, siis tuleb seda materjali uurida.

Alustama SQL-päring tabelisse uue kirje lisamiseks:

INSERT INTO kasutajate (login, pass) väärtused ("TestUser", "123456")

Kirje lisamisel on esimene käsk " INSERT INTO", siis selle tabeli nimi, kuhu kirje sisestame. Järgmiseks tulevad sulgudes väljade nimed, mida tahame täita. Ja siis sulgudes pärast sõna " väärtused"Hakkame loetlema valitud väljade väärtusi. Pärast selle päringu täitmist ilmub meie tabelisse uus kirje.

Mõnikord nõutav värskenda tabeli kirjet, selleks on järgmine SQL päring:

UPDATE kasutajad SET login = "TestUser2", pass="1234560" WHERE login="TestUser"

See päring on keerulisem, kuna sellel on " KUS", aga sellest veidi madalamal. Kõigepealt tuleb käsk" VÄRSKENDAMINE", seejärel tabeli nimi ja pärast " SET" Kirjeldame kõigi väljade väärtusi, mida tahame muuta. See oleks lihtne, kuid tekib küsimus: " Millist kirjet tuleks uuendada?". Selle jaoks on olemas " KUS". Sel juhul värskendame kirjet, välja Logi sisse"mis loeb" TestKasutaja". Pange tähele, et kui selliseid kirjeid on mitu, siis kõike uuendatakse! Seda on väga oluline mõista, vastasel juhul võite oma arvutustabeli kaotada.

Räägime natuke lähemalt KUS". Lisaks lihtsatele võrdsuse kontrollidele on ka ebavõrdsusi ja loogikatehteid: JA ja VÕI.

VÄRSKENDAGE kasutajaid SET login = "TestUser2", pass = "1234560" WHERE id< 15 AND login="TestUser"

The SQL päring ajakohastab neid kirjeid id mida on vähem 15 JA väli" Logi sisse"on tähendus" TestKasutaja". Loodan, et saite kujundusest aru" KUS"sest see on väga oluline. Täpselt" KUS" kasutatakse siis, kui tabelitest kirjete toomine, ja see on andmebaasidega töötamisel kõige sagedamini kasutatav ülesanne.

Ja lõpuks, lihtne SQL-päring kirjete kustutamiseks tabelist:

DELETE FROM kasutajatest WHERE login="TestUser2"

pärast käsku" KUSTUTA FROM" läheb selle tabeli nimeks, milles soovite kirjeid kustutada. Järgmisena kirjeldame konstruktsiooni "KUS". Kui kirje vastab kirjeldatud tingimustele, siis see kustutatakse. Jällegi pöörake tähelepanu, olenevalt kirjete arvust, mida soovite rahuldada tingimus pärast " KUS", saab neid kustutada suvalise arvu.

Selles õppetükis õpime, kuidas sisestada MySql andmebaasi, kasutaja poolt vormi sisestatud andmed. Õpid veebilehe koodist MySql andmebaasiga ühenduse loomist, samuti andmete töötlemist ja sisestamist andmebaasi.


Viimases õppetükis rääkisin teile, kuidas Denverit arvutisse installida, kuidas luua oma andmebaas, sellele kasutaja, kuidas luua andmebaasis tabelit ja täitsime selle ühe kirjega.

Selles õpetuses loome kasutajainfo sisestamiseks html-dokumendi ning seda infot käsitleva php-faili, mis töötleb andmeid, loob ühenduse MySql andmebaasiga ja lisab sinna uued kirjed.

Liikudes sõnadelt tegudele, alustame.

Kasutajaandmete lisamine veebilehelt MySql andmebaasi

Esimene samm: html-vormi loomine andmete sisestamiseks

Algusest peale peame valmistuma töötama php, MySql-iga ja testima kirjutatud koodi kohalikus arvutis. Selle jaoks:

1. Käivitage oma arvutis Denwer.

2. Avage Denveri loodud virtuaalne ketas (näiteks minu ketas on "Z"). Avage see, seejärel: kodu - localhost - www - looge seal uus kaust ja pange sellele nimi (panen nimeks "db1").

3. Kui töötate Adobe Dreamweaveris, siis minge saidihaldurisse, klõpsake seal nuppu "Uus", valige teeks vastloodud kausta tee, ülaltoodud väljal saate saidile nime anda, seejärel klõpsake Salvesta – Valmis. Pärast kõike seda kuvatakse teie kaust Adobe Dreamweaveri paremal paanil.

1. Nüüd loome tavalise html-faili (nimetame selle info_form.html ja salvestame vastloodud db1 kausta) ja kirjutame sinna vormikoodi info sisestamiseks. Meie new_db andmebaasi kasutajate tabelis on 4 välja, mida kasutaja saab täita (id-väli täidetakse automaatselt). Selle põhjal saate luua järgmise koodi:

Pealkirjata dokument










Siin registreeritakse fail meie vormi parameetris "tegevus". form.php. See on töötleja fail, mille me järgmisena loome.

Loome vormi stiilimiseks ka faili style.css. See on juba koodi sees, nii et jääb üle vaid see luua, asetada see html-failiga samasse kausta ja kirjutada sinna järgmine kood:

Keha (laius: 400 pikslit; veeris: 0 automaatne; taust: #F8F4B6;) silt (kuva: plokk; hõljumine: vasak; laius: 150 pikslit; polsterdus: 0 10 pikslit; veeris: 18 pikslit 0 0; teksti joondamine: paremale;) # esita(ujuv:parem; veeris:5px 50px 10px 0;)

Nüüd näeb vorm välja selline:

Kui aga sisestad andmed ja proovid vormi esitada, siis näed veateadet, kuna skriptide kataloogis form.php faili ei eksisteeri.

Töötlejafaili loomine on meie järgmine ülesanne.

2. Läheme kausta sisse db1 looge kaust nimega skriptid. Selles salvestame kõik oma skriptid MySql-i andmebaasiga suhtlemiseks.

Pärast kausta loomist looge uus php-fail ja salvestage see skriptide kausta nimega form.php.

Kuid enne kui hakkame otse teabetöötlusfailiga tegelema, peame esmalt ühenduse oma andmebaasiga. Soovitan luua selle jaoks eraldi faili ja põhjus on siin:

Tõenäoliselt peate oma projektis MySql-i andmebaasiga ühenduse looma mitte ainult ühest failist. Reeglina suhtlevad andmebaasiga erinevad projektifailid.
Väga ebapraktiline on kirjutada igasse sellisesse faili sama andmebaasi ühenduse koodi. Ja kui selliseid faile on näiteks 50 ja ühel ilusal päeval muudad kasutaja parooli ja pead kõik need 50 faili üles otsima ja igas parandusi tegema.
Palju mugavam on kasutada ühendamiseks eraldi faili, mis ühendatakse iga failiga, kus peaks olema ühendus MySql andmebaasiga. Sel juhul peate parandusi tegema ainult ühes failis.

Loome siis uue php-faili, nimetagem seda connect.php ja asetage skriptide kausta. Sellesse kirjutame oma MySql-i andmebaasiga ühenduse loomiseks koodi, samuti koodi, mis annab teada vigadest, kui need ilmnevad. Pange tähele, et peate parameetritena sisestama oma kasutajanime, parooli ja andmebaasi nime. Host peab olema kohalik host.

Viga andmebaasiga ühenduse loomisel! ".mysql_error() ."

"); mysql_select_db("new_db")//parameeter sulgudes ("andmebaasi nimi, millega ühenduse luua") või die("

Andmebaasi valiku viga! ". mysql_error() ."

"); ?>

Nüüd läheme faili form.php juurde ja lisame sellesse faili connect.php, kasutades järgmist koodi:

Kui proovite vormi kohe esitada, näete pärast esitamist tühja veebilehte. See on normaalne, kuna ühendasime just baasiga ega kuva praegu midagi muud.

Kui näete veateadet, siis kontrollige, kas kõik parameetrid (kasutajanimi, parool, hostinimi: localhos, andmebaasi nimi) on õiged, ja veenduge ka, et teie Denver oleks sisse lülitatud.

3. Oleme MySql andmebaasiga edukalt ühenduse loonud ja nüüd peame seda tegema aktsepteerima meie töötleja faili vormile sisestatud andmeid. HTML-dokumendis olevad atribuudid "nimi" aitavad meid selles.

Andmete hankimiseks kasutame spetsiaalset php muutuja, mis varustab meid kogu veebivormi teabega. Seda muutujat nimetatakse "$_REQUEST".

Pärast faili connect.php ühendamist kirjutage form.php faili järgmine kood:

$eesnimi = $_TAOTLUS["eesnimi"]; $perekonnanimi = $_TAOTLUS["perenimi"]; $email = $_REQUEST["e-post"]; $facebook = $_REQUEST["facebook"];

4. Saime failis olevad andmed kätte ja sisestasime need muutujatesse. Nüüd vajate saatke need andmed meie MySql andmebaasi tabelisse. Selleks peate allpool kirjutama järgmise koodi:

$insert_sql = "INSERT INTO kasutajad (eesnimi, perekonnanimi, email, facebook)" . "VALUES("($eesnimi)", "($perenimi)", "($e-post)", "($facebook)");"; mysql_query($insert_sql);

Siin moodustame kõigepealt päringu, öeldes, et peame sisestama vastavad muutujad tabeli "kasutajad" vastavatele väljadele. Sisestame selle päringu muutujasse "$insert_sql". Ja seejärel, kasutades spetsiaalset funktsiooni mysql_query, käivitame selle päringu.

Kui täidate ja esitate vormi kohe ning seejärel vaatate oma andmebaasi "kasutajate" tabelit, näete uut kirjet, mis ilmus sinna pärast esitamist.

5. Lisasime veebilehelt uue kirje MySql andmebaasi tabelisse. Nüüd tahan veidi puudutada vormingut, milles meie andmed sisestatakse.

Esiteks tuleb hoolitseda olukorra eest, kui ankeedi täitja võib teabe sisestamise algusesse tarbetuid tühikuid teha. Neid tuleb lõigata.

Teiseks on meil Facebooki põld. Kui soovime seda infot hiljem lingina kuvada, siis peame hoolitsema selle eest, et sellel väljal olevad andmed oleksid õiges vormingus (st "http://www.facebook.com/facebook id") salvestatud. Kuid kasutaja ei sisesta neid andmeid alati nii, nagu me vajame. Ta võib sisestada: "www.facebook.com/facebook id", "facebook.com/facebook id" või lihtsalt "/facebook id".

Selliseid olukordi tuleks vältida. Selleks parandame oma koodi. Funktsiooni kasutades lõikame ära võimalikud lisaruumid trimmima, ja funktsioon kontrollib Facebooki jaoks sisestatud URL-i õigsust preg_match. Seega näeb kogu form.php faili kood välja selline:

Pealkirjata dokument Andmebaasi on lisatud uus kirje!

"; ?>

Funktsiooni kohta preg_match:
See on funktsioon regulaaravaldistega otsimiseks.

Esimene parameeter sulgudes on regulaaravaldis, teine ​​on string, mida otsida.

Funktsioon tagastab ainult esimese vaste: 0, kui vasteid pole, 1, kui vasteid on.

Nüüd proovige vorm tahtlikult täita, pannes ühe välja täitmise algusesse mittevajalikud tühikud ja sisestades facebooki aadressi ilma http://-ta või sisestades kokku ainult Facebooki ID. Saatke päring ja minge siis andmebaasi ja näete, et vaatamata mitte päris korrektsele täitmisele on andmetel täpselt selline vorm, nagu meil vaja on.

Siin ma selle õppetunni lõpetan. Kõik selle õppetunni failid saate alla laadida lähtekoodis (ära unusta lihtsalt failis connect.php parameetreid enda omadeks muuta).

Ja järgmises õppetükis õpime, kuidas MySql-i andmebaasist teavet ekstraheerida, valige soovitud rekordid ja kuvage need ekraanil. Järgmisest õppetunnist mitte ilmajäämiseks tellige ajaveebi värskendused, kasutades allolevat tellimisvormi.

Jäta oma kommentaarid ja jaga oma sõpradega sotsiaalmeedia nuppude abil.

Edu ja kohtumiseni järgmises õppetunnis!

Selles õpetuses vaatleme, kuidas sisestada andmeid andmebaasi otse PHP-skriptidest.

Andmete sisestamine SQL-i abil

Andmete andmebaasi sisestamiseks kasutate SQL-i samal viisil, nagu kasutate SQL-i andmebaasi ja tabelite loomiseks. SQL päringu süntaks on:

INSERT INTO TableName (veerg1, veerg 2, ...) VÄÄRTUSED(väärtus1, väärtus 2, ...)

Nagu näete, saate ühes SQL-lauses värskendada mitut veergu, määrates need komadega eraldatud loendis. Kuid loomulikult saate määrata ka ainult ühe veeru ja ühe väärtuse. Veerud, mida antud SQL-lauses pole mainitud, jäävad tühjaks.

Näide: uue inimese lisamine tabelisse

Selles näites kasutame 18. õppetunni andmebaasi. Oletame, et tahame sisestada inimese andmebaasi. See võib olla Gus Goose telefoninumbriga 99887766 ja sünnikuupäev 1964-04-20 .

SQL-lause võib välja näha järgmine:

$strSQL = "INSERT INTO people(Eesnimi,Perenimi,Telefon,Sünnikuupäev) VÄÄRTUSED("Gus","Goose","99887766 ","1964-04-20")";

Nagu näete, võivad SQL-laused olla üsna pikad ja neid on lihtne kaotada. Seetõttu on parem kirjutada SQL-lause veidi teisiti:

strSQL = "INSERT INTO people("; strSQL = strSQL. "Eesnimi"; strSQL = strSQL. "Perekonnanimi" strSQL = strSQL. "telefon"; strSQL = strSQL. "sünd"; strSQL = strSQL. "VALUES("; strSQL = strSQL . ""Gus", "; strSQL = strSQL. ""Hani", "; strSQL = strSQL. ""99887766", "; strSQL = strSQL. ""1964-04-20")"; mysql_query($strSQL) või die(mysql_error());

Siin koostatakse SQL-lause jagades lause väikesteks osadeks ja kombineerides need seejärel muutujaks $strSQL.

Praktikas ei ole ühe või teise rakendamisel vahet, kuid suurte laudadega töötades muutub ülimalt oluliseks oskus "järge pidada", seega valige sobivaim meetod.

Proovime Gus Goose'i andmebaasi sisestamiseks käivitada järgmise koodi:

Andmete sisestamine andmebaasi // Ühendage andmebaasiserveriga mysql_connect("mysql.myhost.com", "kasutaja", "seesam") või die(mysql_error());// Valige andmebaas mysql_select_db("minuandmebaas") või die(mysql_error()); // SQL-lause koostamine $strSQL = "INSERT INTO people("; $strSQL = $strSQL . "Eesnimi"; $strSQL = $strSQL . "Perekonnanimi"; $strSQL = $strSQL . "telefon"; $strSQL = $strSQL . "Sünnikuupäev)"; $strSQL = $strSQL . "VÄÄRTUSED("; $strSQL = $strSQL . "Gus", "; $strSQL = $strSQL . ""Hani", "; $strSQL = $strSQL . ""99887766", "; $strSQL = $strSQL . ""1964-04-20")"; // SQL-lause käivitatakse mysql_query($strSQL) või die(mysql_error()); // Ühenduse sulgemine mysql_close(); ?>

DB uuendatud!

Kasutaja sisendi salvestamine andmebaasi

Tõenäoliselt saite juba aru, et saate selle jaoks vormi luua, nagu 11. õppetükis, ja vormi väärtused saab sisestada SQL-lausesse. Oletame, et teil on lihtne vorm:

See vorm esitatakse faili insert.php kus, nagu on näidatud 11. õppetükis, saate kasutajapoolse sisendi vormi sisu taotledes. Sel konkreetsel juhul võib SQL-lause olla järgmine:

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

Samamoodi saate taotleda andmeid küpsiste, seansside, päringustringide jms kohta.

Kõige tavalisemad algajate vead

Alguses saate tõenäoliselt hulga veateateid, kui proovite andmebaasi värskendada. Andmebaasiga töötamisel pole ühtegi viga absoluutselt vastuvõetamatu. Valesti paigutatud koma võib tähendada, et andmebaasi ei uuendata ja kuvatakse veateade. Allpool kirjeldame levinumaid vigu.

Kehtetu andmetüüp

On oluline, et veeru andmed ja andmetüüp ühtiksid. Iga veerg võib sisaldada teatud tüüpi andmeid. Järgmine ekraanipilt näitab meie näite tabeli "inimesed" andmetüüpe.

Kui proovite näiteks andmeväljale teksti või numbrit sisestada, kuvatakse tõrge. Seetõttu määrake andmetüüp võimalikult täpselt.

Kõige sagedamini kasutatavad andmetüübid on loetletud allpool.

Tähendus Andmetüüp Suurus
CHR
Tekst või teksti ja numbrite kombinatsioon. Võib kasutada ka arvutustes mittekasutatud numbrite puhul (nt telefoninumbrid). Kuni 255 tähemärki – kumbki pikkus on määratud jaotises "Pikkus"
TEKST
Suured tekstiplokid või teksti ja numbrite kombinatsioon. Kuni 65 535 tähemärki
INT
Arvandmed matemaatiliste arvutuste jaoks. 4 baiti
KUUPÄEV
Kuupäevad vormingus AAA-KK-PP 3 baiti
AEG
Aeg vormingus hh:mm:ss 3 baiti
KUUPÄEV KELLAAEG
Kuupäev ja kellaaeg AAA-KK-PP hh:mm:ss vormingus 8 baiti

SQL-laused jutumärkide või kaldkriipsudega

Kui proovite sisestada teksti, mis sisaldab üksikjutumärke ("), topeltjutumärke (") või kaldkriipsu (\), siis kirjet andmebaasi ei lisata. Lahendus on asendada kaldkriipsud enne märke, mida tuleks andmebaasipäringutesse sisestamisel mällu ajada.