Datu pievienošana sql php tabulai. Datu pievienošana PHP

Šajā rakstā mēs apskatīsim, kā izmantot PHP, lai ievietotu rindas MySQL datu bāzē.

1. solis - tabulas izveide

Pirmkārt, jums ir jāizveido datu tabula. Šī ir vienkārša procedūra, ko var veikt, izmantojot phpMyAdmin savā mitināšanas vadības panelī.

Pēc pieteikšanās phpMyAdmin jūs redzēsit šādu saskarni:

Izveidosim tabulu ar nosaukumu Studenti datubāzē u266072517_name, noklikšķinot uz pogas "Izveidot tabulu". Pēc tam jau redzēsim jauna lapa, kurā mēs iestatām visus nepieciešamos tabulas parametrus:

Tas ir visvairāk vienkārša iestatīšana ko var izmantot galdam un iegūt Papildus informācija par tabulu / datu bāzu struktūru.

Kolonnu opcijas:

  • Nosaukums ir tās kolonnas nosaukums, kas parādās tabulas augšdaļā.
  • Tips - kolonnas veids. Piemēram, mēs izvēlējāmies varchar, jo mēs ievadīsim virknes vērtības.
  • Garums / Vērtības - izmanto, lai norādītu maksimālais garums kas var būt ierakstam šajā slejā.
  • Indekss — laukam "ID" izmantojām indeksu "Primary". Veidojot tabulu, kā primāro atslēgu ieteicams izmantot tikai vienu kolonnu. To izmanto, lai uzskaitītu ierakstus tabulā, un tas ir nepieciešams, veidojot tabulu. Es atzīmēju arī "A_I", kas apzīmē "Auto Increment" - parametru ierakstu skaita automātiskai piešķiršanai (1,2,3,4 ...).
    Noklikšķiniet uz pogas Saglabāt, un tabula tiks izveidota.

2. darbība. PHP koda rakstīšana datu ievietošanai MySQL.

1. iespēja — MySQLi metode

Vispirms jums ir jāizveido savienojums ar datu bāzi. Pēc tam mēs izmantojam SQL INSERT vaicājumu. Pilnīga koda piemērs:

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

Pirmā koda daļa (3.–18. rindiņa) ir paredzēta savienojuma izveidei ar datu bāzi.

Sāksim ar 19. rindiņu:

$ sql = "INSERT INTO Students (vārds, uzvārds, e-pasts) VĒRTĪBAS (" Thom "," Vial "," [aizsargāts ar e-pastu]")";

Tas ievieto datus MySQL datu bāzē. INSERT INTO ir paziņojums, kas pievieno datus norādītajai tabulai. Mūsu piemērā dati tiek pievienoti tabulai Studenti.

Tālāk seko to kolonnu uzskaitījums, kurās tiek ievietotas vērtības: vārds, uzvārds, e-pasts. Dati tiks pievienoti norādītajā secībā. Ja mēs būtu rakstījuši (e-pasts, uzvārds, vārds), vērtības būtu pievienotas citā secībā.

Nākamā daļa ir VALUES operators. Šeit mēs norādām kolonnu vērtības: vārds = Toms, uzvārds = flakons, e-pasts = [aizsargāts ar e-pastu]

Mēs izpildījām pieprasījumu, izmantojot PHP kodu. Kodā SQL vaicājumi ir jākotē. Nākamā koda daļa (20.–22. rindiņa) pārbauda, ​​vai mūsu pieprasījums bija veiksmīgs:

if (mysqli_query ($ conn, $ sql)) (atbalss "Jauns ieraksts ir izveidots veiksmīgi";)

Šis kods parāda ziņojumu par pieprasījuma veiksmīgu izpildi.

Un pēdējā daļa (22–24 rindas) parāda paziņojumu, ja pieprasījums nebija veiksmīgs:

else (atbalss "Kļūda:". $ sql. "
". mysqli_error ($ conn);)

2. iespēja — PHP datu objekta (ACVN) metode

Pirmkārt, mums ir jāizveido savienojums ar datu bāzi, izveidojot jaunu ACVN objektu. Strādājot ar to, izmantosim dažādas metodes ACVN. Objektu metodes sauc šādi:

$ the_Object-> the_Method ();

ACVN ļauj “sagatavot” SQL pirms tā izpildes. Pirms palaišanas SQL vaicājums tiek novērtēts un "labots". Piemēram, vienkāršāko SQL injekcijas uzbrukumu var veikt, vienkārši ievadot SQL formas laukā. Piemēram:

Tā kā tas ir sintaktiski pareizs SQL, semikolu padara DROP DATABASE user_table par jaunu SQL vaicājumu un lietotāja tabula tiek atmesta. Sagatavotās izteiksmes (saistītie mainīgie) neļauj semikolu un pēdiņu izmantošanai pabeigt sākotnējo vaicājumu, tāpēc komanda DROP DATABASE nekad netiks izpildīta.

Lai izmantotu sagatavotos paziņojumus, ir jāieraksta jauns mainīgais, kas izsauc datu bāzes objekta sagatavošanas () metodi.

Pareizs kods:

getMessage (); ) // Iestatīt mainīgos personai, kuru vēlamies pievienot datu bāzei $ first_Name = "Thom"; $ last_Name = "flakons"; $ e-pasts = " [aizsargāts ar e-pastu]"; // Izveidojiet mainīgo, kas izsauc datu bāzes objekta sagatavošanas () metodi // SQL vaicājums, kuru vēlaties izpildīt, tiek ievadīts kā parametrs, un vietturi tiek rakstīti šādi: placeholder_name $ my_Insert_Statement = $ my_Db_Connection-> ready ( " INSERT INTO Studenti ( vārds, uzvārds, e-pasts) VĒRTĪBAS (: vārds, uzvārds,: uzvārds,: e-pasts) "); // Tagad mēs pasakām skriptam, kurš mainīgais attiecas uz katru vietturi, lai izmantotu metodi bindParam () // Pirmais parametrs ir vietturis iepriekš sniegtajā paziņojumā , otrais ir mainīgais, kam jāattiecas uz $ my_Insert_Statement-> bindParam (: pirmais_nosaukums, $ pirmais_nosaukums); $ my_Insert_Statement-> bindParam (: last_name, $ last_Name); $ my_Insert_Statement-> bindParam e-pasts, $ e-pasts); // Izpildīt vaicājumu, izmantojot tikko definētos datus // Metode execute () atgriež TRUE, ja tā ir veiksmīga, un FALSE, ja nē, dodot iespēju izdrukāt savu ziņojumu, ja ($ my_Insert_Statement-> execute ( )) (atbalss "New reco rdcreatedsuccessfully "; ) else (echo "Nevar izveidot ierakstu";) // Šajā brīdī jūs varat mainīt mainīgo datus un palaist vaicājumu, lai datu bāzes datiem pievienotu citus datus datubāzei $ first_Name = "Jānis"; $ last_Name = "Smits"; $ e-pasts = " [aizsargāts ar e-pastu]"; $ my_Insert_Statement-> execute (); // Izpildīt vēlreiz, kad mainīgais tiek mainīts if ($ my_Insert_Statement-> execute ()) (echo" Jauns ieraksts ir izveidots veiksmīgi ";) else (atbalss" Nevar izveidot ierakstu ";

28., 29. un 30. rindā mēs izmantojam datu bāzes objekta metodi bindParam (). Ir arī bindValue () metode, kas ļoti atšķiras no iepriekšējās.

  • bindParam () — šī metode novērtē datus, kad tiek sasniegta izpildes () metode. Pirmo reizi skripts sasniedz izpildes () metodi, tas redz, ka $ first_Name atbilst "Thom". Pēc tam tas saista šo vērtību un izpilda pieprasījumu. Kad skripts sasniedz otro izpildes () metodi, tas redz, ka $ first_Name tagad ir "Jānis". Pēc tam tas saista šo vērtību un atkal sāk pieprasījumu ar jaunām vērtībām. Ir svarīgi atcerēties, ka mēs kādreiz definējām vaicājumu un atkārtoti izmantojām to ar dažādiem datiem dažādos skripta punktos.
  • bindValue () — šī metode novērtē datus, tiklīdz tiek sasniegta vērtība bindValue (). Tā kā $ first_Name tika iestatīts uz "Thom", kad tiek sasniegts bindValue (), tas tiks izmantots ikreiz, kad $ my_Insert_Statement tiks izsaukts execute ().
    Ņemiet vērā, ka mēs atkārtoti izmantojam mainīgo $ first_Name un piešķiram tam jaunu vērtību otrreiz. Pēc skripta palaišanas datu bāzē tiks norādīti abi vārdi, neskatoties uz to, ka $ first_Name mainīgajam skripta beigās ir vērtība "Jānis". Atcerieties, ka PHP pārbauda visu skriptu pirms tā palaišanas.

Ja atjaunināsit skriptu, lai aizstātu bindParam ar bindValue, jūs divreiz ievietosit datubāzē "Thom Vial", un Džons Smits tiks ignorēts.

3. solis – veiksmes apstiprināšana un problēmu risināšana

Ja pieprasījums ievietot rindas datu bāzē bija veiksmīgs, mēs redzēsim šādu ziņojumu:

Izplatīto kļūdu novēršana

MySQLi

Pretējā gadījumā tiks parādīts kļūdas ziņojums. Piemēram, kodā pieļausim vienu sintakses kļūdu, un mēs iegūstam sekojošo:

Ar pirmo koda daļu viss ir kārtībā, savienojums tika izveidots veiksmīgi, bet SQL vaicājums neizdevās.

"Kļūda: INSERT INTO Studenti (vārds, uzvārds, e-pasts) VALUES (" Thom "," Vial "," [aizsargāts ar e-pastu]") Jūsu SQL sintaksē ir kļūda; pārbaudiet rokasgrāmatu, kas atbilst jūsu MySQL servera versijai, lai atrastu tiesību sintakse, ko izmantot blakus" (vārds, uzvārds, e-pasts) VĒRTĪBAS ("Thom", "Vial", " [aizsargāts ar e-pastu]")" 1. rindā "

Radās sintakses kļūda, kuras dēļ skripts neizdevās. Kļūda bija šeit:

$ sql = "INSERT INTO Students (vārds, uzvārds, e-pasts) VĒRTĪBAS (" Thom "," Vial "," [aizsargāts ar e-pastu]")";

Mēs esam izmantojuši cirtaini breketes, nevis parastās. Tas ir nepareizi, un skripts radīja sintakses kļūdu.

ACVN

ACVN savienojuma 7. rindā kļūdas režīms ir iestatīts uz "rādīt visus izņēmumus". Ja tiktu norādīta cita vērtība un pieprasījums neizdevās, mēs nesaņemsim kļūdas ziņojumus.

Šo iestatījumu vajadzētu izmantot tikai skripta izstrādes laikā. Kad tas ir aktivizēts, var tikt parādīti datu bāzes un tabulu nosaukumi, kas drošības apsvērumu dēļ ir labāk paslēpti. Iepriekš aprakstītajā gadījumā, kad parasto breketu vietā tika izmantotas cirtainas breketes, kļūdas ziņojums izskatās šādi:

Fatāla kļūda: Uncaughtexception "PDOException" ar ziņojumu "SQLSTATE: Sintakses kļūda vai piekļuves pārkāpums: 1064 Jūsu SQL sintaksē ir kļūda; pārbaudiet rokasgrāmatu, kas atbilst jūsu MySQL servera versijai, lai atrastu tiesību sintakse, ko izmantot blakus "(vārds, uzvārds, e-pasts) VALUES (" Thom "," Vial "," [aizsargāts ar e-pastu]")" 1. rindā "

Citas iespējamās problēmas:

  • Kolonnas ir nepareizas (slejas neeksistē vai to nosaukumos ir pareizrakstības kļūdas).
  • Viena veida vērtība tiek piešķirta cita veida kolonnai. Piemēram, ja mēģināt ievietot skaitli 47 kolonnā Vārds, jūs saņemsit kļūdu. Šajā kolonnā ir jāizmanto virknes vērtība. Bet, ja mēs būtu norādījuši skaitli pēdiņās (piemēram, "47"), tas būtu izdevies, jo tā ir virkne.
  • Tika mēģināts ievadīt datus tabulā, kas neeksistē. Kā arī pareizrakstības kļūda tabulas nosaukumā.

Pēc veiksmīgas datu ievadīšanas mēs redzēsim, ka tie ir pievienoti datu bāzei. Zemāk ir tabulas piemērs, kurai ir pievienoti dati.

Šajā ierakstā es vēlos jums pastāstīt kā pārsūtīt uz Datu bāzi formā ievadītos datus... Un tāpēc mēs izveidojam vienkāršu veidlapu, kurā mums būs divi lauki: lietotājvārds un viņa e-pasts:

Tavs vārds:
Tavs e-pasts:


Šo veidlapu var izmantot, lai reģistrētu jaunu lietotāju, nosūtītu biļetenus, vāktu statistiku un jebko... Kopumā lietotājs šajā veidlapā aizpilda savus datus: vārdu un pastu, noklikšķina uz pogas un pēc tam datus. nonāk php skriptā:

$ nosaukums = $ _POST ["vārds"]; $ e-pasts = $ _POST ["e-pasts"]; $ rezultāts = mysqli_query ("INSERT INTO user (name, email) VALUES (" $ name "," $ email ")"); if ($ rezultāts) (echo "Dati veiksmīgi saglabāti!";) else (echo "Radās kļūda, lūdzu, mēģiniet vēlreiz.";)


Kas notiek šajā scenārijā? Tagad izdomāsim!
Veidlapā ievadītie dati tiek pārsūtīti ar POST metodi uz php skriptu (kas ir rakstīts iepriekš), un, izmantojot globālo masīvu $ _POST, dati tiek veidoti mainīgajos lielumos $ nosaukums un $ email:

$ nosaukums = $ _POST ["vārds"]; $ e-pasts = $ _POST ["e-pasts"];


Kad mainīgie ir gatavi ievadīšanai datu bāzē, mēs sastādām pieprasījumu. Bet vispirms jūsu skriptiem jau jābūt savienotiem ar datu bāzi, kā izveidot savienojumu ar datu bāzi, es rakstīju šajā pavedienā:. Pats pieprasījums izskatās šādi:

$ rezultāts = mysqli_query ("INSERT INTO user (name, email) VALUES (" $ name "," $ email ")");


Šajā kodā mēs norādījām, ka lietotāja tabulā esošajām vārda un e-pasta šūnām tiks pievienoti šādi mainīgie: $ vārds un $ e-pasts.
Tālāk, ja viss noritēja labi, saņemsim ziņu no nosacījuma:

Dati veiksmīgi saglabāti!


Ja radušās problēmas un dati nav ievadīti, mēs saņemsim kļūdas ziņojumu:

Radās kļūda. Lūdzu, mēģiniet vēlreiz.


Tas ir viss!

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

Ja vēlaties, varat pievienot papildu laukus informācijas ievadīšanai, piemēram, mums ir jāpievieno lauks lietotāja pilsētas ievadīšanai. Mums jau ir gatavs skripts (rakstīts iepriekš), tagad mēs vienkārši pievienojam lauku Tava pilsēta, mēs nosauksim mainīgo: $ pilsēta. Un tā datu ievades formā pēc:

Tavs e-pasts:


pievienot:

Tava pilsēta:


php skriptā pēc:

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


pievienot:

$ pilsēta = $ _POST ["pilsēta"];


Un, protams, mēs to pievienojam arī pieprasījumam, piemēram:

$ rezultāts = mysqli_query ("INSERT INTO lietotājs (vārds, e-pasts, pilsēta) VALUES (" $ vārds "," $ e-pasts "," $ pilsēta ")");


Lūk, ar ko jums vajadzētu beigties:
Ievades forma:

Tavs vārds:
Tavs e-pasts:
Tava pilsēta:


Skripts:

$ nosaukums = $ _POST ["vārds"]; $ e-pasts = $ _POST ["e-pasts"]; $ pilsēta = $ _POST ["pilsēta"]; $ rezultāts = mysqli_query ("INSERT INTO lietotājs (vārds, e-pasts, pilsēta) VALUES (" $ vārds "," $ e-pasts "," $ pilsēta ")"); if ($ rezultāts == true) (echo "Dati veiksmīgi saglabāti!";) else (echo "Radās kļūda, lūdzu, mēģiniet vēlreiz.";)


Kā redzat, nekas sarežģīts! Ja nepieciešams, varat pievienot vēl vienu lauku un vēl, un vēl...

Šajā rakstā mēs analizēsim, iespējams, dažus no vissvarīgākajiem SQL vaicājumi... Šis vaicājumi ierakstu pievienošanai un noņemšanai no datu bāzes tabulas... Tā kā ĻOTI bieži tas ir nepieciešams pievienojiet tabulai jaunus ierakstus, un lai to izdarītu automātiskajā režīmā, tad šis materiāls ir nepieciešams mācībām.

Sākt SQL vaicājums, lai pievienotu tabulai jaunu ierakstu:

INSERT INTO lietotāju (pieteikšanās, caurlaide) vērtības ("TestUser", "123456")

Pievienojot ierakstu, pirmā komanda ir " INSERT INTO", tad tabulas nosaukums, kurā ievietojam ierakstu. Tālāk nāk to lauku nosaukumi, kurus vēlamies aizpildīt iekavās. Un tad iekavās aiz vārda" vērtības"Mēs sākam uzskaitīt mūsu atlasīto lauku vērtības. Pēc šī vaicājuma izpildes mūsu tabulā parādīsies jauns ieraksts.

Dažreiz tas prasa atjaunināt ierakstu tabulā, šim nolūkam ir šāds SQL vaicājums:

UPDATE lietotāju SET login = "TestUser2", pass = "1234560" WHERE login = "TestUser"

Šis vaicājums ir sarežģītāks, jo tam ir konstrukcija " KUR", bet par to nedaudz zemāk. Vispirms nāk komanda" ATJAUNINĀT"kam seko tabulas nosaukums, kam seko" IESTATĪT"Mēs aprakstām visu to lauku vērtības, kurus vēlamies mainīt. Tas būtu vienkārši, bet rodas jautājums:" Kurš ieraksts ir jāatjaunina?". Šim nolūkam ir" KUR". Šajā gadījumā mēs atjauninām ierakstu, lauku" Pieslēgties"kam ir nozīme" TestUser". Lūdzu, ņemiet vērā, ja šādi ieraksti ir vairāki, tad pilnīgi viss tiks atjaunināts! Tas ir ļoti svarīgi saprast, pretējā gadījumā jūs riskējat zaudēt savu galdu.

Parunāsim nedaudz vairāk par " KUR". Papildus vienkāršiem vienlīdzības testiem ir arī nevienlīdzības, kā arī loģiskās darbības: UN un VAI.

UPDATE lietotāju SET login = "TestUser2", pass = "1234560" WHERE id< 15 AND login="TestUser"

The SQL vaicājums atjauninās šos ierakstus id kas ir mazāk 15 UN lauks " Pieslēgties"ir nozīme" TestUser". Es ceru, ka jūs sapratāt dizainu." KUR"jo tas ir ļoti svarīgi. Tieši tā." KUR"lietots, kad ierakstu iegūšana no tabulām, un tas ir visbiežāk izmantotais uzdevums, strādājot ar datu bāzēm.

Un visbeidzot, vienkāršs SQL vaicājums ierakstu dzēšanai no tabulas:

DZĒST NO lietotājiem WHERE login = "TestUser2"

Pēc komandas " DZĒST NO"ir tās tabulas nosaukums, kurā vēlaties dzēst ierakstus. Tālāk mēs aprakstam" WHERE "konstrukciju. KUR", jebkuru skaitu no tiem var izdzēst.

Šajā nodarbībā uzzināsim, kā lietotāja veidlapā ievadītos datus ievadīt MySql datu bāzē. Jūs uzzināsiet, kā no tīmekļa lapas koda izveidot savienojumu ar MySql datu bāzi, kā arī apstrādāt un ievietot datus datu bāzē.


Pēdējā nodarbībā stāstīju, kā datorā uzinstalēt Denveru, kā izveidot savu datu bāzi, tai lietotāju, kā izveidot tabulu datu bāzē, un mēs to aizpildījām ar vienu ierakstu.

Šajā nodarbībā izveidosim html dokumentu lietotāja informācijas ievadīšanai, kā arī php failu, kas apstrādā šo informāciju, kas apstrādās datus, pieslēgsies MySql datubāzei un ievietos tur jaunus ierakstus.

Pārejot no vārdiem pie darbiem, sāksim.

Pievienojiet pielāgotus datus MySql datu bāzei no tīmekļa lapas

Pirmais solis: izveidojiet html veidlapu datu ievadei

No paša sākuma mums ir jāsagatavojas darbam ar php, MySql un rakstītā koda testēšanai uz lokālā datora. Priekš šī:

1. Datorā palaidiet programmu Denwer.

2. Atveriet Denveras izveidoto virtuālo disku (piemēram, man ir šis disks "Z"). Atveriet to, pēc tam: mājas - localhost - www - tur izveidojiet jaunu mapi un piešķiriet tai nosaukumu (es došu nosaukumu “db1”).

3. Ja strādājat programmā Adobe Dreamweaver, tad dodieties uz vietnes pārvaldnieku, tur noklikšķiniet uz pogas "Jauns", izvēlieties ceļu uz jaunizveidoto mapi kā ceļu, laukā augstāk varat piešķirt vietnei nosaukumu, pēc tam noklikšķiniet uz Saglabāt — Gatavs. Pēc visa šī jūsu mape parādīsies Adobe Dreamweaver labajā rūtī.

1. Tagad izveidosim parastu html failu (sauksim to info_form.html un saglabāsim tikko izveidotajā mapē db1) un ierakstīsim tur formas kodu informācijas ievadīšanai. Mūsu lietotāju tabulā new_db datubāzē ir 4 lauki, kurus lietotājs var aizpildīt (ID lauks tiks aizpildīts automātiski). Pamatojoties uz to, varat izveidot šādu kodu:

Dokuments bez nosaukuma










Šeit mūsu veidlapas parametrā "darbība" ir fails form.php... Tas būs apstrādātāja fails, kuru mēs izveidosim nākamo.

Izveidosim arī style.css failu, lai veidotu veidlapas stilu. Tas jau ir iekļauts kodā, tāpēc atliek tikai to izveidot, ievietot tajā pašā mapē ar html failu un ierakstīt tajā šādu kodu:

Pamatteksts (platums: 400 pikseļi; piemale: 0 automātiski; fons: # F8F4B6;) etiķete (displejs: bloks; peldošs: pa kreisi; platums: 150 pikseļi; polsterējums: 0 10 pikseļi; piemale: 18 pikseļi 0 0; teksta līdzinājums: pa labi;) # iesniegt (peldēt: pa labi; mala: 5 pikseļi 50 pikseļi 10 pikseļi 0;)

Tagad veidlapa izskatās šādi:

Tomēr, ievadot datus un mēģinot iesniegt veidlapu, tiks parādīta kļūda, jo skriptu direktorijā nav form.php faila.

Apdarinātāja faila izveide ir mūsu nākamais uzdevums.

2. Ejam iekšā mapē db1 izveidot mapi ar nosaukumu "Skripti"... Tajā mēs saglabāsim visus savus skriptus mijiedarbībai ar MySql datu bāzi.

Kad mape ir izveidota, izveidojiet jaunu php failu un saglabājiet to skriptu mapē ar nosaukumu form.php.

Bet pirms sākat tieši ar informācijas apstrādātāja failu, vispirms ir jāizveido savienojums ar mūsu datu bāzi. Es iesaku šim nolūkam izveidot atsevišķu failu, un lūk, kāpēc:

Visticamāk, jūsu projektā jums būs jāpievienojas MySql datu bāzei ne tikai no viena faila. Parasti dažādi projektu faili mijiedarbojas ar datu bāzi.
Ir ļoti nepraktiski katrā šādā failā ierakstīt vienu un to pašu datu bāzes savienojuma kodu. Un, ja ir, piemēram, 50 šādi faili un kādā jaukā dienā jūs nomainīsiet lietotāja paroli un jums būs jāmeklē visi šie 50 faili un katrā jāveic labojumi.
Daudz ērtāk ir pieslēgšanai izmantot atsevišķu failu, kas tiks savienots ar katru no failiem, kur jābūt savienojumam ar MySql datu bāzi. Šajā gadījumā labojumi jāveic tikai vienā failā.

Tātad, izveidosim jaunu php failu, nosauksim to connect.php un ievietojiet to skriptu mapē. Tajā mēs pierakstīsim kodu savienojumam ar mūsu MySql datu bāzi, kā arī kodu, kas ziņos par kļūdām, ja tās notiks. Lūdzu, ņemiet vērā, ka kā parametri jums būs jāievada savs lietotājvārds, parole un datu bāzes nosaukums. Uzņēmējam ir jābūt vietējam saimniekdatoram.

Kļūda, veidojot savienojumu ar datu bāzi! ". mysql_error ()."

"); mysql_select_db (" new_db ") // parametrs iekavās (" bāzes nosaukums, ar kuru izveidot savienojumu ") vai mirst ("

Datu bāzes atlases kļūda! ". mysql_error ()."

"); ?>

Tagad pāriesim uz form.php failu un savienosim ar to failu connect.php, izmantojot šādu kodu:

Ja mēģināsit iesniegt veidlapu tūlīt, pēc iesniegšanas redzēsit tukšu tīmekļa lapu. Tas ir labi, jo mēs tikko izveidojām savienojumu ar bāzi un vēl nerāda neko citu.

Ja redzat kļūdas ziņojumu, pārbaudiet visu parametru pareizību (lietotājvārds, parole, resursdatora nosaukums: localhos, datu bāzes nosaukums), kā arī pārliecinieties, vai jūsu Denvera ir iespējota.

3. Mēs esam veiksmīgi izveidojuši savienojumu ar MySql datu bāzi, un tagad mums ir nepieciešams pieņemt veidlapā ievadītos datus mūsu failu apstrādātājam... Atribūti "name", kas atrodas html dokumentā, mums palīdzēs.

Lai iegūtu datus, mēs izmantosim īpašu php mainīgais kas sniedz mums visu informāciju no tīmekļa veidlapas. Šī mainīgā nosaukums ir “$ _REQUEST”.

Pēc faila connect.php pievienošanas pievienojiet form.php failam šādu kodu:

$ pirmais_vārds = $ _PIEPRASĪJUMS ["first_name"]; $ uzvārds = $ _PIEPRASĪJUMS ["uzvārds"]; $ e-pasts = $ _REQUEST ["e-pasts"]; $ facebook = $ _REQUEST ["facebook"];

4. Mēs saņēmām datus failā un ievietojām tos mainīgajos. Tagad tev vajag nosūtiet šos datus uz mūsu MySql datu bāzes tabulu... Lai to izdarītu, tālāk ir jāievada šāds kods:

$ insert_sql = "INSERT INTO lietotājiem (vārds, uzvārds, e-pasts, facebook)". "VALUES (" ($ pirmais_vārds) "," ($ uzvārds) "," ($ e-pasts) "," ($ facebook) ");"; mysql_query ($ insert_sql);

Šeit mēs vispirms veidojam vaicājumu, sakot, ka mums ir jāievieto atbilstošie mainīgie attiecīgajos tabulas “lietotāji” laukos. Mēs ievietojām šo pieprasījumu mainīgajā “$ insert_sql”. Un tad, izmantojot īpašo funkciju mysql_query, mēs izpildām šo vaicājumu.

Ja tagad aizpildīsit un iesniedzat veidlapu un pēc tam apskatīsit savas datu bāzes tabulu “lietotāji”, jūs redzēsiet jaunu ierakstu, kas tur parādījās pēc iesniegšanas.

5. Mēs esam ievietojuši jaunu ierakstu no tīmekļa lapas MySql datu bāzes tabulā. Tagad es vēlos nedaudz pieskarties formātam, kādā tiek ievietoti mūsu dati.

Pirmkārt, jārūpējas par situāciju, kad veidlapas aizpildītājs informācijas ievades sākumā var atstāt nevajadzīgas atstarpes. Tie ir jāsagriež.

Otrkārt, mums ir Facebook lauks. Ja turpmāk vēlamies šo informāciju attēlot kā saiti, tad mums ir jārūpējas, lai dati šajā laukā tiktu saglabāti pareizā formātā (ti, "http://www.facebook.com/ facebook id"). Taču lietotājs ne vienmēr ievadīs šos datus tā, kā mums tas ir nepieciešams. Viņš var ievadīt: “www.facebook.com/ facebook id”, “facebook.com/ facebook id” vai vienkārši “/ facebook id”.

No šādām situācijām vajadzētu izvairīties. Lai to izdarītu, izlabosim savu kodu. Izmantojot funkciju, mēs nogriežam iespējamās papildu vietas apgriezt, un funkcija pārbaudīs facebook ievadītā URL pareizību preg_match... Tādējādi viss form.php faila kods izskatīsies šādi:

Dokuments bez nosaukuma Jauns ieraksts ir ievietots datu bāzē!

"; ?>

Par funkciju preg_match:
Šī ir funkcija meklēšanai ar regulārām izteiksmēm.

Pirmais parametrs iekavās ir regulārā izteiksme, otrais ir meklējamā virkne.

Funkcija atgriež tikai pirmo atbilstību: 0 - ja nav atbilstības, 1 - ja ir atbilstība.

Tagad mēģiniet apzināti aizpildīt veidlapu, jebkura lauka aizpildīšanas sākumā atstājot nevajadzīgas atstarpes un ievadot facebook adresi bez http: // vai pat ievadot tikai facebook ID. Nosūtiet pieprasījumu un pēc tam dodieties uz datu bāzi, un jūs redzēsiet, ka, neskatoties uz ne visai pareizu aizpildīšanu, datiem ir tieši tāda forma, kāda mums ir nepieciešama.

Ar to es beigšu šo nodarbību. Visus šīs nodarbības failus varat lejupielādēt avotā (tikai neaizmirstiet nomainīt parametrus uz savējiem failā connect.php).

Un nākamajā nodarbībā mēs iemācīsimies izgūt informāciju no MySql datu bāzes, atlasiet nepieciešamie ieraksti un parādiet tos ekrānā. Lai nepalaistu garām nākamo nodarbību, abonējiet emuāra atjauninājumus, izmantojot tālāk redzamo abonēšanas veidlapu.

Atstājiet savus komentārus un kopīgojiet tos ar draugiem, izmantojot sociālo mediju pogas.

Lai veicas un tiekamies nākamajā nodarbībā!

Šajā apmācībā mēs apskatīsim, kā ievietot datus datu bāzē tieši no jūsu PHP skriptiem.

Datu ievietošana, izmantojot SQL

Jūs izmantojat SQL, lai ievietotu datus datu bāzē, tāpat kā SQL, lai izveidotu datu bāzes un tabulas. SQL vaicājuma sintakse ir šāda:

INSERT INTO tabulas nosaukums (1. kolonna, kolonna 2, ...) VĒRTĪBAS (vērtība1, vērtība 2,...)

Kā redzat, vienā SQL priekšrakstā varat atjaunināt vairākas kolonnas, norādot tās komatu atdalītā sarakstā. Bet, protams, varat norādīt tikai vienu kolonnu un vienu vērtību. Kolonnas, kas nav minētas šajā SQL priekšrakstā, paliks tukšas.

Piemērs: jaunas personas ievietošana tabulā

Šajā piemērā mēs izmantojam 18. nodarbības datubāzi. Pieņemsim, ka mēs vēlamies datubāzē ievietot personu. Tas varētu būt Gus zoss ar tālruņa numuru 99887766 un dzimšanas datums 1964-04-20 .

SQL priekšraksts varētu izskatīties šādi:

$ strSQL = "IEVIETOT personām (Vārds, Uzvārds, Tālrunis, Dzimšanas datums) VĒRTĪBAS (" Gus "," Zoss "," 99887766 "," 1964-04-20 ")";

Kā redzat, SQL priekšraksti var būt diezgan gari, un jūs varat viegli pazust. Tāpēc labāk ir rakstīt SQL priekšrakstu nedaudz savādāk:

strSQL = "INSERT INTO people ("; strSQL = strSQL. "Vārds,"; strSQL = strSQL. "Uzvārds," strSQL = strSQL. "Tālrunis"; strSQL = strSQL. "dzimšana)"; strSQL = strSQL. "VĒRTĪBAS ("; strSQL = strSQL. "" Gus ","; strSQL = strSQL. "" Zoss ","; strSQL = strSQL. "" 99887766 ","; strSQL = strSQL. "" 1964-04-20 ")"; mysql_query ($ strSQL) vai die (mysql_error ());

Šeit SQL priekšraksts ir izveidots, sadalot paziņojumu mazās daļās un pēc tam apvienojot tos mainīgajā $ strSQL.

Praksē nav atšķirības vienas vai otras metodes pielietošanā, taču, strādājot ar lieliem galdiem, ārkārtīgi svarīgi kļūst prast "sekot līdzi", tāpēc izvēlieties atbilstošāko metodi.

Mēģināsim izmantot šādu kodu, lai datubāzē ievietotu Gus Goose:

Datu ievietošana datu bāzē // Izveidojiet savienojumu ar datu bāzes serveri mysql_connect ("mysql.myhost.com", "user", "sesame") vai die (mysql_error ());// Datu bāzes atlase mysql_select_db ("mydatabase") vai mirst (mysql_error ()); // Veidojiet SQL priekšrakstu $ strSQL = "IEVIETOT cilvēkiem ("; $ strSQL = $ strSQL. "Vārds,"; $ strSQL = $ strSQL. "Uzvārds,"; $ strSQL = $ strSQL. "Tālrunis"; $ strSQL = $ strSQL. "Dzimšanas datums)"; $ strSQL = $ strSQL. "VĒRTĪBAS ("; $ strSQL = $ strSQL. "" Gus ","; $ strSQL = $ strSQL. "" Zoss ","; $ strSQL = $ strSQL. "" 99887766 ","; $ strSQL = $ strSQL. "" 1964-04-20 ")"; // Tiek izpildīts SQL priekšraksts mysql_query ($ strSQL) vai die (mysql_error ()); // Aizveriet savienojumu mysql_close (); ?>

Datubāze ir atjaunināta!

Lietotāja ievades saglabāšana datu bāzē

Jūs, iespējams, jau sapratāt, ka varat izveidot veidlapu šim nolūkam, kā tas ir 11. nodarbībā, un vērtības no veidlapas var ievietot SQL priekšrakstā. Pieņemsim, ka jums ir vienkārša forma:

Šī veidlapa tiek iesniegta failā ievietot.php kur, kā parādīts 11. nodarbībā, varat iegūt lietotāja ievadi, pieprasot veidlapas saturu. Šajā konkrētajā gadījumā SQL priekšraksts var būt šāds:

strSQL = "INSERT INTO people (FirstName) vērtības (" ". $ _POST [" Vārds "]." ")"

Tāpat varat pieprasīt datus sīkfailiem, sesijām, vaicājumu virknēm utt.

Biežākās iesācēju kļūdas

Sākumā, iespējams, saņemsit virkni kļūdu ziņojumu, mēģinot atjaunināt datu bāzi. Strādājot ar datu bāzi, neviena kļūda nav pilnīgi nepieņemama. Nepareizi ievietots komats var nozīmēt, ka datu bāze netiek atjaunināta, un jūs saņemsit kļūdas ziņojumu. Tālāk mēs aprakstām visbiežāk pieļautās kļūdas.

Nederīgs datu tips

Ir svarīgi, lai kolonnas dati un datu tips atbilstu. Katrā kolonnā var būt noteikta veida dati. Nākamajā ekrānuzņēmumā ir parādīti tabulas "cilvēki" datu veidi no mūsu piemēra.

Kļūda tiek parādīta, ja, piemēram, mēģināt datu laukā ievietot tekstu vai skaitli. Tāpēc pēc iespējas precīzāk iestatiet datu tipu.

Tālāk ir norādīti visizplatītākie datu veidi.

Nozīme Datu tips Izmērs
CHR
Teksts vai teksta un ciparu kombinācija. To var izmantot arī skaitļiem, kas netiek izmantoti aprēķinos (piemēram, tālruņu numuri). Līdz 255 rakstzīmēm — vai nu garums, kas norādīts sadaļā “Garums”
TEKSTS
Lieli teksta bloki vai teksta un ciparu kombinācija. Līdz 65 535 rakstzīmēm
INT
Skaitliskie dati matemātiskiem aprēķiniem. 4 baiti
DATUMS
Datumi GGG-MM-DD formātā 3 baiti
LAIKS
Laiks hh: mm: ss formātā 3 baiti
DATUMS LAIKS
Datums un laiks GGG-MM-DD formātā hh: mm: ss 8 baiti

SQL priekšraksti ar pēdiņām vai slīpsvītrām

Ja mēģināt ievietot tekstu, kas satur vienas pēdiņas ("), dubultpēdiņu (") vai slīpsvītras (\) rakstzīmes, ieraksts netiks ievietots datu bāzē. Risinājums ir aizstāt slīpsvītras pirms rakstzīmēm, kuras būtu jāmin, ievietojot datu bāzes vaicājumos.