Տվյալների ավելացում sql php աղյուսակին: Տվյալների ավելացում PHP- ին

Այս հոդվածում մենք կանդրադառնանք, թե ինչպես օգտագործել PHP- ն տողեր MySQL տվյալների բազայում տեղադրելու համար:

Քայլ 1 - սեղանի ստեղծում

Նախ, դուք պետք է ստեղծեք տվյալների աղյուսակ: Սա պարզ ընթացակարգ է, որը կարող է կատարվել ՝ օգտագործելով phpMyAdmin- ը ձեր հոստինգի կառավարման վահանակում:

PhpMyAdmin մուտք գործելուց հետո դուք կտեսնեք այսպիսի ինտերֆեյս.

Եկեք u266072517_name տվյալների բազայում ուսանողներ անունով աղյուսակ ստեղծենք ՝ կտտացնելով «Ստեղծել աղյուսակ» կոճակին: Դրանից հետո կտեսնենք նոր էջ, որի վրա մենք սահմանում ենք աղյուսակի բոլոր անհրաժեշտ պարամետրերը.

Սա ամենից շատն է հեշտ կարգավորումորը կարող է օգտագործվել սեղանի և ստացման համար լրացուցիչ տեղեկությունաղյուսակների / շտեմարանների կառուցվածքի մասին:

Սյունակի ընտրանքներ.

  • Անունը սյունակի անունն է, որը հայտնվում է աղյուսակի վերևում:
  • Տեսակ - սյունակի տեսակը: Օրինակ, մենք ընտրեցինք varchar- ը, քանի որ մուտքագրելու ենք տողի արժեքներ:
  • Երկարություն / արժեքներ- օգտագործվում է նշելու համար առավելագույն երկարությունըոր այս սյունակի գրառումը կարող է ունենալ:
  • Ինդեքս - մենք օգտագործել ենք «Հիմնական» ինդեքսը «ID» դաշտի համար: Աղյուսակ ստեղծելիս խորհուրդ է տրվում օգտագործել միայն մեկ սյունակ որպես հիմնական բանալի: Այն օգտագործվում է աղյուսակում գրառումները թվարկելու համար և պահանջվում է սեղան տեղադրելիս: Նշել եմ նաև «A_I», որը նշանակում է «Ավտոմատ ավելացում» ՝ գրառումների քանակի ինքնաբերաբար նշանակման պարամետր (1,2,3,4 ...):
    Կտտացրեք «Պահել» կոճակին, և աղյուսակը կստեղծվի:

Քայլ 2. Գրեք PHP կոդ ՝ տվյալները MySQL- ում տեղադրելու համար:

Տարբերակ 1 - MySQLi մեթոդ

Նախ անհրաժեշտ է կապ հաստատել տվյալների բազայի հետ: Դրանից հետո մենք օգտագործում ենք SQL INSERT հարցումը: Կոդի ամբողջական օրինակ.

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

Կոդի առաջին մասը (տողեր 3 - 18) նախատեսված է տվյալների բազային միանալու համար:

Սկսենք 19 -րդ տողից.

$ sql = "ՄՏԱԵՔ ուսանողների մեջ (անուն, ազգանուն, էլ. փոստ) ԱՐUԵՔՆԵՐ (" Thom "," Vial "," [էլփոստը պաշտպանված է]")";

Այն տվյալները տեղադրում է MySQL տվյալների բազայում: INSERT INTO- ը հայտարարություն է, որը տվյալ աղյուսակին ավելացնում է տվյալներ: Մեր օրինակում տվյալները ավելացվում են Ուսանողների աղյուսակին:

Հաջորդը գալիս է այն սյունակների թվարկումը, որոնց մեջ տեղադրված են արժեքները ՝ անուն, ազգանուն, էլ. Տվյալները կավելացվեն ցուցադրված կարգով: Եթե ​​մենք գրեինք (էլ. Փոստ, ազգանուն, անուն), ապա արժեքները կավելացվեին այլ հերթականությամբ:

Հաջորդ մասը VALUES օպերատորն է: Այստեղ մենք սահմանում ենք արժեքներ սյունակների համար ՝ name = Thom, lastname = Vial, email = [էլփոստը պաշտպանված է]

Մենք հարցում ենք կատարել ՝ օգտագործելով PHP կոդ: Կոդում SQL հարցումները պետք է մեջբերվեն: Կոդի հաջորդ հատվածը (տողեր 20-22) ստուգում է, արդյոք մեր հարցումը հաջող է եղել.

if (mysqli_query ($ conn, $ sql)) (արձագանք «Նոր ձայնագրությունը հաջողությամբ ստեղծվեց»;)

Այս ծածկագիրը ցուցադրում է հաղորդագրություն հարցման հաջող կատարման մասին:

Իսկ վերջին մասում (22 - 24 տող) ցուցադրվում է ծանուցում, եթե հարցումը հաջողված չէ.

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

Տարբերակ 2 - PHP տվյալների օբյեկտի (PDO) մեթոդ

Նախ, մենք պետք է միանանք տվյալների բազային ՝ ստեղծելով նոր PDO օբյեկտ: Դրա հետ աշխատելիս մենք կօգտագործենք տարբեր մեթոդներ PDO. Օբյեկտի մեթոդները կոչվում են այսպես.

$ the_Object-> the_Method ();

PDO- ն թույլ է տալիս «պատրաստել» SQL ծածկագիրը նախքան այն կատարելը: SQL հարցումը գնահատվում և «ուղղվում» է գործարկումից առաջ: Օրինակ, SQL ներարկման ամենապարզ հարձակումը կարող է իրականացվել ՝ պարզապես SQL ձևի դաշտ ներարկելով: Օրինակ:

Քանի որ սա շարահյուսականորեն ճիշտ SQL է, ստորակետը DROP DATABASE user_table- ը դարձնում է նոր SQL հարցում և օգտագործողի աղյուսակը ընկնում է: Պատրաստված արտահայտությունները (կապված փոփոխականներ) թույլ չեն տալիս ստորակետներին և մեջբերումներին լրացնել սկզբնական հարցումը, ուստի DROP DATABASE հրամանը երբեք չի կատարվի:

Պատրաստված հայտարարություններն օգտագործելու համար հարկավոր է գրել նոր փոփոխական, որը կոչում է տվյալների բազայի օբյեկտի prepa () մեթոդ:

Codeիշտ կոդ:

getMessage (); ) // Փոփոխականներ սահմանել այն անձի համար, որը մենք ցանկանում ենք ավելացնել տվյալների բազայում $ first_Name = "Thom"; $ last_Name = "Շիշ"; $ էլփոստ = " [էլփոստը պաշտպանված է]"; // Ստեղծեք փոփոխական, որը կանչում է տվյալների բազայի օբյեկտի prepa () մեթոդը // SQL հարցումը, որը ցանկանում եք կատարել, մուտքագրվում է որպես պարամետր, և տեղապահները գրվում են այսպես. Placeholder_name $ my_Insert_Statement = $ my_Db_Connection-> պատրաստել ( "ՄՏԱԵՔ ուսանողների մեջ (անուն, ազգանուն, էլ. վերը նշված հայտարարության տեղապահն է, երկրորդը այն փոփոխականն է, որը պետք է վերաբերի $ my_Insert_Statement-> bindParam (: first_name, $ first_Name); $ my_Insert_Statement-> bindParam (: last_name, $ last_Name); $ my_Insert_Statement-> bindParam (: էլ. փոստ, $ էլփոստ); // Կատարել հարցումը ՝ օգտագործելով մեր սահմանած տվյալները )) (արձագանք «Նոր ռեկո rdcreatedsuccessfully »; ) else (echo "Unable to createrecord";) // Այս պահին դուք կարող եք փոխել փոփոխվող տվյալները և գործարկել հարցում ՝ տվյալների բազայում այլ տվյալներ ավելացնելու համար $ first_Name = "John"; $ last_Name = "Սմիթ"; $ էլփոստ = " [էլփոստը պաշտպանված է]"; $ my_Insert_Statement-> կատարել (); // Կրկին գործարկել, երբ փոփոխականը փոխվի, եթե ($ my_Insert_Statement-> կատարել ()) (արձագանքել է" Նոր գրառումը հաջողությամբ հաջողվեց ";) այլ կերպ (արձագանք" Հնարավոր չէ ստեղծել ձայնագրություն ";

28, 29 և 30 տողերում մենք օգտագործում ենք տվյալների բազայի օբյեկտի bindParam () մեթոդը: Կա նաև bindValue () մեթոդը, որը շատ տարբերվում է նախորդից:

  • bindParam () - Այս մեթոդը գնահատում է տվյալները, երբ execute () մեթոդը հասնում է: Առաջին անգամ, երբ սցենարը հասնում է execute () մեթոդին, տեսնում է, որ $ first_Name- ը համապատասխանում է «Thom» - ին: Այնուհետև այն կապում է այս արժեքը և գործարկում է հարցումը: Երբ սցենարը հասնում է երկրորդ execute () մեթոդին, տեսնում է, որ $ first_Name- ն այժմ համընկնում է «John» - ի հետ: Այնուհետև այն կապում է այս արժեքը և հարցումը նորից սկսում նոր արժեքներով: Կարևոր է հիշել, որ մենք մի անգամ հարցում էինք սահմանել և այն կրկին օգտագործել տարբեր տվյալների հետ `սցենարի տարբեր կետերում:
  • bindValue () - Այս մեթոդը գնահատում է տվյալները անմիջապես bindValue () հասնելուն պես: Քանի որ $ first_Name- ը սահմանվել է «Thom», երբ bindValue () - ն հասնում է, այն կօգտագործվի ամեն անգամ, երբ execute () մեթոդը կանչվի $ my_Insert_Statement- ում:
    Նկատի ունեցեք, որ մենք կրկին օգտագործում ենք $ first_Name փոփոխականը և երկրորդ անգամ նրան նոր արժեք ենք վերագրում: Սցենարը գործարկելուց հետո երկու անուններն էլ նշված կլինեն տվյալների բազայում, չնայած այն բանին, որ սցենարի վերջում $ first_Name փոփոխականն ունի «"ոն» արժեքը: Հիշեք, որ PHP- ն ստուգում է ամբողջ սցենարը նախքան այն գործարկելը:

Եթե ​​դուք թարմացնեք սցենարը bindParam- ը bindValue- ով փոխարինելու համար, ապա «Thom Vial» - ը երկու անգամ կտեղադրեք տվյալների բազա, և Smithոն Սմիթը անտեսված կլինի:

Քայլ 3 - Հաջողության հաստատում և խնդիրների լուծում

Եթե ​​տվյալների բազայում տողեր տեղադրելու խնդրանքը հաջող էր, մենք կտեսնենք հետևյալ հաղորդագրությունը.

Ընդհանուր սխալների վերացում

MySQLi

Հակառակ դեպքում, սխալ հաղորդագրություն կցուցադրվի: Օրինակ, եկեք կոդում կատարենք մեկ շարահյուսական սխալ, և մենք ստանում ենք հետևյալը.

Կոդի առաջին մասը լավ է, կապը հաջողությամբ հաստատվեց, բայց SQL հարցումը ձախողվեց:

«Սխալ. Ներմուծեք ուսանողների մեջ (անուն, ազգանուն, էլ. Փոստ) ԱՐUԵՔՆԵՐ (" Thom "," Vial "," [էլփոստը պաշտպանված է]") Սխալ ունեք ձեր SQL շարահյուսության մեջ. Ստուգեք ձեռնարկը, որը համապատասխանում է ձեր MySQL սերվերի տարբերակին` մոտ "(անուն, ազգանուն, էլ. Փոստ) արժեքների (« Thom »,« Vial »,") արժեքների մոտ օգտագործելու համար: [էլփոստը պաշտպանված է]")" 1 -ին տողում "

Կատարվեց շարահյուսական սխալ, որի պատճառով սցենարը ձախողվեց: Սխալը այստեղ էր.

$ sql = "ՄՏԱԵՔ ուսանողների մեջ (անուն, ազգանուն, էլ. փոստ) ԱՐUԵՔՆԵՐ (" Thom "," Vial "," [էլփոստը պաշտպանված է]")";

Մենք սովորական գանգուրների փոխարեն օգտագործել ենք գանգուր փակագծեր: Սա սխալ է, և սցենարը առաջացրել է շարահյուսական սխալ:

PDO

PDO կապի 7 -րդ տողում սխալի ռեժիմը սահմանվում է «ցուցադրել բոլոր բացառությունները»: Եթե ​​այլ արժեք էր տրված, և հարցումը ձախողվում էր, մենք որևէ սխալի հաղորդագրություն չէինք ստանա:

Այս կարգավորումը պետք է օգտագործվի միայն սցենար մշակելիս: Երբ ակտիվացված է, տվյալների բազայի և աղյուսակների անունները կարող են ցուցադրվել, որոնք ավելի լավ թաքնված են անվտանգության նկատառումներից ելնելով: Վերևում նկարագրված դեպքում, երբ սովորական ամրակների փոխարեն օգտագործվում էին գանգուր ամրակներ, սխալի հաղորդագրությունն այսպիսին է թվում.

Fatակատագրական սխալ. «PDOException» - ի չբացահայտում `« SQLSTATE ՝ շարահյուսության սխալ կամ մուտքի խախտում. 1064 »Դուք ունեք սխալ ձեր SQL շարահյուսության մեջ. ստուգեք ձեռնարկը, որը համապատասխանում է ձեր MySQL սերվերի տարբերակին `մոտ շարադրության (անուն, ազգանուն, էլ. հասցե) արժեքների օգտագործման համար (« Thom »,« Vial »," [էլփոստը պաշտպանված է]")" 1 -ին տողում "

Այլ հնարավոր խնդիրներ.

  • Սյունակները սխալ են (գոյություն չունեցող սյունակներ կամ դրանց անունների ուղղագրական սխալ):
  • Արժեքի մեկ տեսակ տրվում է այլ տեսակի սյունակին: Օրինակ, եթե փորձեք 47 թիվը տեղադրել Անուն սյունակում, սխալ կստանաք: Այս սյունակում դուք պետք է օգտագործեք տողի արժեք: Բայց եթե թիվը չակերտների մեջ նշեինք (օրինակ ՝ «47»), այն կաշխատեր, քանի որ այն տող է:
  • Փորձ է արվել տվյալներ մուտքագրել գոյություն չունեցող աղյուսակի մեջ: Եվ նաև աղյուսակի անվան ուղղագրական սխալ:

Տվյալները հաջողությամբ մուտքագրելուց հետո կտեսնենք, որ դրանք ավելացվել են տվյալների բազայում: Ստորև բերված է աղյուսակի օրինակ, որին ավելացվել են տվյալներ:

Այս գրառման մեջ ես ուզում եմ ձեզ ասել ինչպես փոխանցել տվյալների շտեմարան մուտքագրված տվյալները ձևով... Եվ այսպես, մենք ստեղծում ենք մի պարզ ձև, որտեղ կունենանք երկու դաշտ ՝ օգտվողի անունը և նրա էլ.

Քո անունը:
Քո էլէկտրոնային փոստը:


Այս ձևը կարող է օգտագործվել նոր օգտվող գրանցելու, նորություններ ուղարկելու, վիճակագրություն հավաքելու և որևէ բանի համար ... Ընդհանրապես, օգտվողը իր տվյալները լրացնում է այս ձևի մեջ ՝ անուն և փոստ, կտտացնում է կոճակին, այնուհետև տվյալներին մտնում է php սկրիպտ.

$ name = $ _POST ["name"]; $ email = $ _POST ["էլփոստ"]; $ result = mysqli_query ("ՄՏԱԵՔ օգտվողին (անուն, էլ. փոստ) արժեքներ (" $ name "," $ email ")"); եթե ($ արդյունք) (արձագանք «Տվյալները հաջողությամբ պահվել են»);) այլ (արձագանք «Սխալ է տեղի ունեցել, խնդրում ենք նորից փորձել»:)


Ի՞նչ է կատարվում այս սցենարում: Եկեք դա պարզենք հիմա:
Ձևի մեջ մուտքագրված տվյալները փոխանցվում են POST մեթոդով php սցենարին (որը գրված է վերևում), և օգտագործելով $ _POST գլոբալ զանգվածը, տվյալները ձևավորվում են $ name և $ email փոփոխականների մեջ.

$ name = $ _POST ["name"]; $ email = $ _POST ["էլփոստ"];


Այն բանից հետո, երբ փոփոխականները պատրաստ են մուտքագրվել տվյալների բազա, մենք կազմում ենք հարցում: Բայց նախ, ձեր սցենարներն արդեն պետք է կապված լինեն տվյալների բազայի հետ, ինչպես միանալ տվյալների բազային, ես գրել եմ այս թեմայում.Հարցումն ինքնին այսպիսի տեսք ունի.

$ result = mysqli_query ("ՄՏԱԵՔ օգտվողին (անուն, էլ. փոստ) VALUES (" $ name "," $ email ")");


Այս ծածկագրում մենք նշեցինք, որ օգտվողի աղյուսակում գտնվող անվան և էլփոստի բջիջներին կավելացվեն հետևյալ փոփոխականները ՝ $ name և $ email:
Ավելին, եթե ամեն ինչ լավ անցավ, մենք կստանանք հաղորդագրություն պայմանից.

Տվյալները հաջողությամբ պահվեցին:


Եթե ​​որևէ խնդիր կար, և տվյալները մուտքագրված չէին, մենք կստանանք սխալի հաղորդագրություն.

Սխալ է տեղի ունեցել, նորից փորձեք:


Վերջ!

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

Youանկության դեպքում կարող եք ավելացնել ավելի շատ դաշտ ՝ տեղեկատվություն մուտքագրելու համար, օրինակ ՝ մենք պետք է օգտագործողի քաղաք մուտքագրելու դաշտ ավելացնենք: Մենք արդեն ունենք պատրաստի սցենար (գրված է վերևում), այժմ մենք պարզապես ավելացնում ենք դաշտը Քո քաղաքը, մենք փոփոխականի անունը կտանք ՝ $ քաղաք: Եվ այսպես, տվյալների մուտքագրման ձևում ՝ հետո.

Քո էլէկտրոնային փոստը:


ավելացնել:

Ձեր քաղաքը.


Php սցենարով ՝ հետո.

$ email = $ _POST ["էլփոստ"];


ավելացնել:

$ city = $ _POST ["քաղաք"];


Եվ, իհարկե, մենք նաև խնդրում ենք ավելացնում, այսպես.

$ result = mysqli_query ("ՄՏԱԵՔ օգտվողին (անուն, էլ. փոստ, քաղաք) ԱՐUԵՔՆԵՐ (" $ name "," $ email "," $ city ")");


Ահա, թե ինչով պետք է ավարտվեք.
Մուտքագրման ձև.

Քո անունը:
Քո էլէկտրոնային փոստը:
Ձեր քաղաքը.


Սցենար:

$ name = $ _POST ["name"]; $ email = $ _POST ["էլփոստ"]; $ city = $ _POST ["քաղաք"]; $ result = mysqli_query ("ՄՏԱԵՔ օգտվողին (անուն, էլ. փոստ, քաղաք) ԱՐUԵՔՆԵՐ (" $ name "," $ email "," $ city ")"); եթե ($ result == true) (արձագանք «Տվյալները հաջողությամբ պահվել են»;) այլ կերպ (echo «Սխալ է տեղի ունեցել, նորից փորձեք»;)


Ինչպես տեսնում եք, ոչ մի բարդ բան չկա: Անհրաժեշտության դեպքում կարող եք ավելացնել մեկ այլ դաշտ, և ավելին, և ավելին ...

Այս հոդվածում մենք կվերլուծենք թերևս ամենակարևորներից մի քանիսը SQL հարցումներ... այն տվյալների բազայի աղյուսակից գրառումներ ավելացնելու և հեռացնելու հարցումներ... Քանի որ, շատ հաճախ դա անհրաժեշտ է ավելացնել նոր գրառումներ սեղանին, և դա անել ավտոմատ ռեժիմում, ապա այս նյութը պահանջվում է ուսումնասիրության համար:

Սկսել SQL հարցում ՝ նոր գրառում սեղանին ավելացնելու համար:

Մուտք գործեք օգտվողների (մուտք, անցում) արժեքներ («TestUser», «123456»)

Գրառում ավելացնելիս առաջին հրամանը « ՄՏԱԵԼ", այնուհետև այն աղյուսակի անունը, որի մեջ մենք տեղադրում ենք գրառումը: Հաջորդը գալիս են այն դաշտերի անունները, որոնք մենք ցանկանում ենք լրացնել փակագծերում: Այնուհետև բառից հետո փակագծերում" արժեքները«Մենք սկսում ենք թվարկել այն դաշտերի արժեքները, որոնք մենք ընտրել ենք: Այս հարցումը կատարելուց հետո մեր աղյուսակում կհայտնվի նոր գրառում:

Երբեմն տեւում է թարմացնել գրառումը աղյուսակում, դրա համար կա հետևյալը SQL հարցում:

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

Այս հարցումն ավելի բարդ է, քանի որ ունի կառուցվածք » ՈERՐ", բայց դրա մասին` ստորև: Նախ գալիս է հրամանը " ԹԱՐՄԱՆԵԼ«որին հաջորդում է սեղանի անունը, որին հաջորդում է» SET«Մենք նկարագրում ենք բոլոր այն ոլորտների արժեքները, որոնք մենք ցանկանում ենք փոխել: Դա պարզ կլիներ, բայց հարց է ծագում. Ո՞ր գրառումը պետք է թարմացնեք:". Դրա համար կա" ՈERՐ". Այս դեպքում մենք թարմացնում ենք ռեկորդը, դաշտը" մուտք գործել«ինչը կարևոր է» TestUserԽնդրում ենք նկատի ունենալ, որ եթե կան մի քանի նման գրառումներ, ապա բացարձակապես ամեն ինչ կթարմացվի! Սա շատ կարևոր է հասկանալ, հակառակ դեպքում դուք վտանգում եք կորցնել ձեր սեղանը:

Եկեք մի փոքր ավելին խոսենք դրա մասին » ՈERՐԲացի հավասարության պարզ թեստերից, կան նաև անհավասարություններ, ինչպես նաև տրամաբանական գործողություններ. ԵՎեւ ԿԱՄ.

UPDATE users SET login = "TestUser2", pass = "1234560" WHERE id< 15 AND login="TestUser"

The SQL հարցումկթարմացնի այդ գրառումները idորոնք ավելի քիչ են 15 ԵՎդաշտ » մուտք գործել«իմաստ ունի» TestUser«Հուսով եմ, որ դու պարզեցիր դիզայնը»: ՈERՐ«Որովհետև դա շատ կարևոր է: ՈERՐ«օգտագործվում է, երբ սեղաններից գրառումներ վերցնելը, և սա տվյալների բազաների հետ աշխատելիս ամենահաճախ օգտագործվող խնդիրն է:

Եվ վերջապես, մի ​​պարզ SQL հարցում ՝ սեղանից գրառումները ջնջելու համար:

DEՆTEԵԼ օգտվողներից, որտեղից մուտք = "TestUser2"

Հրամանից հետո " DEՆTEԵԼ ԱՌԱՆ"այն աղյուսակի անունն է, որում ցանկանում եք ջնջել գրառումները: Հաջորդը, մենք նկարագրում ենք" WHERE "կոնստրուկցիան: Եթե գրառումը համապատասխանի նկարագրված պայմաններին, այն կջնջվի: ՈERՐ», դրանցից ցանկացած քանակ կարող է ջնջվել:

Այս դասում մենք կսովորենք, թե ինչպես օգտվողի կողմից մուտքագրված տվյալները ձևի մեջ մուտքագրել MySql տվյալների բազա: Դուք կսովորեք, թե ինչպես միանալ MySql տվյալների շտեմարանին վեբ էջի կոդից, ինչպես նաև մշակել և մուտքագրել տվյալները տվյալների բազայում:


Վերջին դասին ես ձեզ ասացի, թե ինչպես տեղադրել Դենվերը ձեր համակարգչում, ինչպես ստեղծել ձեր սեփական տվյալների բազան, դրա համար օգտագործողը, ինչպես ստեղծել տվյալների բազայում աղյուսակ, և մենք այն լրացրեցինք մեկ գրառումով:

Այս դասում մենք կստեղծենք օգտագործողի տեղեկատվության մուտքագրման html փաստաթուղթ, ինչպես նաև այս տեղեկատվության մշակման համար նախատեսված php ֆայլ, որը կվերամշակի տվյալները, կկապվի MySql տվյալների բազայի հետ և այնտեղ կտեղադրի նոր գրառումներ:

Խոսքից գործի անցնելով ՝ եկեք սկսենք:

Վեբ էջից ավելացրեք անհատական ​​տվյալներ MySql տվյալների բազայում

Առաջին քայլը. Տվյալների մուտքագրման համար ստեղծեք html ձև

Հենց սկզբից մենք պետք է պատրաստվենք php, MySql- ի հետ աշխատելու և գրված կոդը տեղական համակարգչում փորձարկելու համար: Սրա համար:

1. Գործարկեք Denwer- ը ձեր համակարգչում:

2. Բացեք Դենվերի ստեղծած վիրտուալ սկավառակը (օրինակ, ես ունեմ այս սկավառակը «Z»): Բացեք այն, այնուհետև.

3. Եթե ​​աշխատում եք Adobe Dreamweaver- ում, ապա գնացեք կայքի կառավարիչ, այնտեղ կտտացրեք «Նոր» կոճակին, որպես ուղի ընտրեք նոր ստեղծված թղթապանակի ուղին, վերևում գտնվող դաշտում կարող եք անուն տալ կայքին, այնուհետև կտտացրեք Պահել - Կատարված է: Այս ամենից հետո ձեր թղթապանակը կհայտնվի Adobe Dreamweaver- ի աջ պատուհանում:

1. Այժմ մենք կստեղծենք սովորական html ֆայլ (եկեք այն անվանենք info_form.html և պահենք այն մեր ստեղծած db1 թղթապանակում) և այնտեղ կգրենք ձևի ծածկագիրը ՝ տեղեկատվություն մուտքագրելու համար: Մեր օգտվողների աղյուսակը new_db տվյալների բազայում ունի 4 դաշտ, որոնք օգտագործողը կարող էր լրացնել (id դաշտը ինքնաբերաբար կլրացվի): Դրա հիման վրա կարող եք ստեղծել այսպիսի ծածկագիր.

Անվերնագիր փաստաթուղթ










Այստեղ մեր ձևի «գործողություն» պարամետրում կա ֆայլ ձև. php... Դա կլինի մշակող ֆայլ, որը մենք կստեղծենք հաջորդիվ:

Եկեք ստեղծենք նաև style.css ֆայլ ՝ մեր ձևը ոճավորելու համար: Այն արդեն ներառված է ծածկագրում, ուստի մնում է այն ստեղծել, տեղադրել այն html ֆայլի հետ նույն թղթապանակում և դրանում գրել հետևյալ ծածկագիրը.

Մարմին (լայնություն ՝ 400px; լուսանցք ՝ 0 ավտոմատ; ֆոն ՝ # F8F4B6;) պիտակ (ցուցադրում ՝ արգելափակում, բոց ՝ ձախ; լայնություն ՝ 150 պիքս; լիցքավորում ՝ 0 10 պեքս; լուսանցք ՝ 18 պեքս 0 0; տեքստ-հավասարեցում ՝ աջ;) # ներկայացնել (float: right; margin: 5px 50px 10px 0;)

Ձևն այժմ այսպիսին է.

Այնուամենայնիվ, եթե մուտքագրեք տվյալներ և փորձեք ներկայացնել ձևը, ապա կտեսնեք սխալ, քանի որ սցենարների գրացուցակում form.php ֆայլ չկա:

Կառավարիչ ֆայլ ստեղծելը մեր հաջորդ խնդիրն է:

2. Եկեք գնանք թղթապանակի ներս db1ստեղծեք անունով թղթապանակ «Սցենարներ»... Դրանում մենք կպահենք մեր բոլոր սցենարները MySql տվյալների բազայի հետ փոխգործակցության համար:

Թղթապանակը ստեղծվելուց հետո ստեղծեք նոր php ֆայլ և այն անվան տակ պահեք սցենարների թղթապանակում ձև. php.

Բայց նախքան տեղեկատվության մշակման ֆայլով ուղղակիորեն սկսելը, նախ պետք է միանալ մեր տվյալների բազային: Ես առաջարկում եմ դրա համար ստեղծել առանձին ֆայլ, և ահա թե ինչու.

Ամենայն հավանականությամբ, ձեր նախագծում դուք ստիպված կլինեք միանալ MySql տվյալների բազային ոչ միայն մեկ ֆայլից: Որպես կանոն, նախագծի տարբեր ֆայլեր փոխազդում են տվյալների բազայի հետ:
Շատ անիրագործելի է յուրաքանչյուր նման ֆայլում գրել տվյալների բազայի միացման նույն ծածկագիրը: Եվ եթե կա այդպիսի 50 ֆայլ, օրինակ, և մի օր դուք կփոխեք օգտվողի գաղտնաբառը և ստիպված կլինեք որոնել այս բոլոր 50 ֆայլերը և ուղղումներ կատարել յուրաքանչյուրում:
Շատ ավելի հարմար է միացման համար օգտագործել առանձին ֆայլ, որը միացված կլինի յուրաքանչյուր ֆայլին, որտեղ պետք է լինի կապ MySql տվյալների բազայի հետ: Այս դեպքում անհրաժեշտ է ուղղումներ կատարել միայն մեկ ֆայլում:

Այսպիսով, եկեք ստեղծենք նոր php ֆայլ, անվանենք այն connect.phpև տեղադրեք այն սցենարների թղթապանակում: Դրանում մենք կգրենք մեր MySql տվյալների բազային միանալու ծածկագիրը, ինչպես նաև այն կոդը, որը կհայտնի սխալների առկայության դեպքում: Խնդրում ենք նկատի ունենալ, որ որպես պարամետր պետք է մուտքագրեք ձեր օգտվողի անունը, գաղտնաբառը և տվյալների բազայի անունը: Հաղորդավարը պետք է լինի localhost:

Չհաջողվեց միանալ տվյալների բազային: ". mysql_error ()":

"); mysql_select_db (" new_db ") // փակագծերում պարամետր (« հիմքի անվանումը ») կամ մահանալ ("

Տվյալների բազայի ընտրության սխալ: ". mysql_error ()":

"); ?>

Այժմ եկեք գնանք form.php ֆայլ և միացրեք connect.php ֆայլը դրան ՝ օգտագործելով հետևյալ ծածկագիրը.

Եթե ​​հիմա փորձեք ներկայացնել ձևը, ներկայացնելուց հետո կտեսնեք դատարկ վեբ էջ: Սա լավ է, քանի որ մենք պարզապես միացել ենք բազային և դեռ որևէ այլ բան չենք ցուցադրում:

Եթե ​​տեսնում եք սխալի հաղորդագրություն, ապա ստուգեք բոլոր պարամետրերի (օգտվողի անուն, գաղտնաբառ, հյուրընկալողի անուն ՝ localhos, տվյալների բազայի) ճշգրտությունը, ինչպես նաև համոզվեք, որ ձեր Դենվերը միացված է:

3. Մենք հաջողությամբ միացանք MySql տվյալների բազային և այժմ մեզ անհրաժեշտ է ընդունեք ձևի մեջ մուտքագրված տվյալները մեր ֆայլերի մշակողի մեջ... «Անուն» հատկանիշները, որոնք առկա են html փաստաթղթում, կօգնեն մեզ դրանում:

Տվյալներ ստանալու համար մենք կօգտագործենք հատուկ php փոփոխականորը մեզ կերակրում է վեբ ձևից ստացված ամբողջ տեղեկատվությունը: Այս փոփոխականը կոչվում է «$ _REQUEST»:

Connect.php ֆայլը միացնելուց հետո form.php ֆայլում ավելացրեք հետևյալ ծածկագիրը.

$ first_name = $ _REQUEST ["first_name"]; $ last_name = $ _REQUEST ["last_name"]; $ email = $ _REQUEST ["էլփոստ"]; $ facebook = $ _REQUEST ["facebook"];

4. Մենք ստացանք ֆայլում եղած տվյալները և դրանք տեղադրեցինք փոփոխականների մեջ: Այժմ դուք պետք է ուղարկեք այս տվյալները մեր MySql տվյալների բազայի աղյուսակին... Դա անելու համար հարկավոր է ստորև գրել հետևյալ կոդը.

$ insert_sql = "ՄՏԱԵԼ օգտվողների մեջ (first_name, last_name, email, facebook)": "VALUES (" ($ first_name) "," ($ last_name) "," ($ email) "," ($ facebook) ");"; mysql_query ($ insert_sql);

Այստեղ մենք նախ ձևավորում ենք հարցում ՝ ասելով, որ մենք պետք է համապատասխան փոփոխականներ տեղադրենք «օգտվողներ» աղյուսակի համապատասխան դաշտերում: Մենք այս հարցումը դնում ենք «$ insert_sql» փոփոխականի մեջ: Եվ հետո, օգտագործելով mysql_query հատուկ գործառույթը, մենք կատարում ենք այս հարցումը:

Եթե ​​այժմ լրացնեք և ներկայացնեք ձևը, այնուհետև նայեք ձեր տվյալների բազայի «օգտվողներ» աղյուսակին, կտեսնեք նոր գրառում, որը հայտնվել է այնտեղ ներկայացնելուց հետո:

5. Մենք վեբ էջից տեղադրել ենք նոր գրառում MySql տվյալների բազայի աղյուսակում: Այժմ ես ուզում եմ մի փոքր շոշափել այն ձևաչափը, որում տեղադրված են մեր տվյալները:

Նախ, պետք է հոգ տանել այն իրավիճակի մասին, երբ ձևը լրացնող անձը կարող է ավելորդ բացատներ տեղադրել տեղեկատվության մուտքագրման սկզբում: Նրանք պետք է կտրվեն:

Երկրորդ, մենք ունենք ֆեյսբուքյան դաշտ: Եթե ​​ապագայում մենք ցանկանում ենք այս տեղեկատվությունը ցուցադրել որպես հղում, ապա պետք է հոգ տանել, որ այս դաշտում տվյալները պահվեն ճիշտ ձևաչափով (այսինքն ՝ «http://www.facebook.com/ facebook id»): Բայց օգտագործողը միշտ չէ, որ մուտքագրում է այս տվյալները, քանի որ դրանք մեզ պետք են: Նա կարող է մուտքագրել ՝ «www.facebook.com/ facebook id», «facebook.com/ facebook id» կամ պարզապես «/ facebook id»:

Այս իրավիճակներից պետք է խուսափել: Դա անելու համար եկեք շտկենք մեր կոդը: Մենք կտրում ենք հնարավոր լրացուցիչ տարածությունները գործառույթի միջոցով զարդարել, և ֆունկցիան կստուգի facebook- ի համար մուտքագրված url- ի ճիշտ լինելը preg_match... Այսպիսով, form.php ֆայլի ամբողջ ծածկագիրն այսպիսի տեսք կունենա.

Անվերնագիր փաստաթուղթ Նոր գրառումը տեղադրվել է տվյալների բազայում:

"; ?>

Գործառույթի մասին preg_match:
Սա կանոնավոր արտահայտություններով որոնման գործառույթ է:

Փակագծերում առաջին պարամետրը կանոնավոր արտահայտությունն է, երկրորդը ՝ որոնման տողը:

Ֆունկցիան վերադարձնում է միայն առաջին համընկնումը `0 - եթե համընկնումներ չկան, 1 - եթե համընկնում կա:

Այժմ փորձեք միտումնավոր լրացնել ձևը `դաշտերից որևէ մեկը լրացնելու սկզբում անհարկի բացատներ ստեղծելով և առանց http: // հասցեի facebook- ի հասցեի մուտքագրման կամ նույնիսկ միայն facebook- ի ID- ի մուտքագրման: Ուղարկեք հարցում, այնուհետև գնացեք տվյալների բազա և կտեսնեք, որ չնայած ոչ լրիվ ճիշտ լրացմանը, տվյալները ունեն հենց այն ձևը, որն անհրաժեշտ է մեզ:

Սրանով ես կավարտեմ այս դասը: Դուք կարող եք ներբեռնել այս դասի բոլոր ֆայլերը աղբյուրից (պարզապես մի մոռացեք, որ պարամետրերը փոխեք ձեր սեփականը connect.php ֆայլում):

Եվ հաջորդ դասին մենք կսովորենք, թե ինչպես ստանալ տեղեկատվություն MySql տվյալների բազայից, ընտրել պահանջվող գրառումներև ցուցադրել դրանք էկրանին: Հաջորդ դասը բաց չթողնելու համար բաժանորդագրվեք բլոգի թարմացումներին ՝ օգտագործելով ստորև բերված բաժանորդագրության ձևը:

Թողեք ձեր մեկնաբանությունները և կիսվեք ձեր ընկերների հետ ՝ օգտագործելով սոցիալական մեդիայի կոճակները:

Հաջողություն և կհանդիպենք հաջորդ դասին:

Այս ձեռնարկում մենք կանդրադառնանք, թե ինչպես տվյալների մուտքագրել տվյալների բազա անմիջապես ձեր PHP սցենարներից:

Տվյալների տեղադրում SQL- ի միջոցով

Դուք օգտագործում եք SQL ՝ տվյալների շտեմարան մուտքագրելու համար այնպես, ինչպես SQL- ն ՝ տվյալների շտեմարաններ և աղյուսակներ ստեղծելու համար: SQL հարցման շարահյուսությունը հետևյալն է.

ՄՏՆԵԼ Աղյուսակի անվան մեջ (սյունակ 1, սյունակ 2, ...) ԱՐUԵՔՆԵՐ (արժեք 1,արժեքը 2, ...)

Ինչպես տեսնում եք, կարող եք թարմացնել բազմաթիվ սյուներ մեկ SQL հայտարարության մեջ ՝ դրանք նշելով ստորակետով առանձնացված ցուցակում: Բայց, իհարկե, կարող եք նաև նշել միայն մեկ սյունակ և մեկ արժեք: Այս SQL հայտարարության մեջ նշված սյունակները դատարկ կմնան:

Օրինակ. Նոր անձի տեղադրում սեղանի մեջ

Այս օրինակում մենք օգտագործում ենք 18 -րդ դասի տվյալների բազան: Ենթադրենք, մենք ցանկանում ենք մարդուն տեղադրել տվյալների բազայում: Կարող է լինել Սագ սագհեռախոսահամարով 99887766 և ծննդյան ամսաթիվը 1964-04-20 .

SQL հայտարարությունը կարող է այսպիսին լինել.

$ strSQL = "ՄՏԱԵԼ մարդկանց մեջ (Անուն, Ազգանուն, Հեռախոս, ateննդյան ամսաթիվ) Արժեքներ (" Gus "," Goose "," 99887766 "," 1964-04-20 ")";

Ինչպես տեսնում եք, SQL հայտարարությունները կարող են բավականին երկար լինել, և դուք հեշտությամբ կարող եք կորչել: Հետևաբար, ավելի լավ է SQL հայտարարությունը մի փոքր այլ կերպ գրել.

strSQL = "ՄՏԱԵԼ մարդկանց մեջ ("; strSQL = strSQL: "Անուն,"; strSQL = strSQL: "Ազգանուն," strSQL = strSQL: "Հեռախոս"; strSQL = strSQL: «ծնունդ»); strSQL = strSQL: "VALUES ("; strSQL = strSQL. "" Gus ","; strSQL = strSQL: "" Սագ ","; strSQL = strSQL: "" 99887766 ","; strSQL = strSQL: "" 1964-04-20 ")"; mysql_query ($ strSQL) կամ die (mysql_error ());

Այստեղ SQL հայտարարությունը կառուցվում է ՝ հայտարարությունը փոքր մասերի բաժանելով, այնուհետև դրանք փոփոխականի վերածելով $ strSQL.

Գործնականում այս կամ այն ​​մեթոդը կիրառելու մեջ տարբերություն չկա, բայց մեծ սեղանների հետ աշխատելիս չափազանց կարևոր է դառնում «հետևել» կարողանալը, ուստի ընտրեք ամենահարմար մեթոդը:

Եկեք փորձենք հետևյալ ծածկագիրը `Gus Goose- ը տվյալների բազայում տեղադրելու համար.

Տվյալների տեղադրում տվյալների բազայում // Միացեք տվյալների բազայի սերվերին mysql_connect («mysql.myhost.com», «օգտվող», «քնջութ») կամ մեռնել (mysql_error ());// Տվյալների բազայի ընտրություն mysql_select_db ("mydatabase") կամ die (mysql_error ()); // Կառուցեք SQL հայտարարությունը $ strSQL = "ՄՏԱԵԼ մարդկանց մեջ ("; $ strSQL = $ strSQL: "Անուն,"; $ strSQL = $ strSQL: "Ազգանուն,"; $ strSQL = $ strSQL: "Հեռախոս"; $ strSQL = $ strSQL: "Ծննդյան օր)"; $ strSQL = $ strSQL: "ԱՐUԵՔՆԵՐ" ("; $ strSQL = $ strSQL: "" Գուս ","; $ strSQL = $ strSQL: "" Սագ ","; $ strSQL = $ strSQL: "" 99887766 ","; $ strSQL = $ strSQL: "" 1964-04-20 ")"; // SQL հայտարարությունը կատարվում է mysql_query ($ strSQL) կամ die (mysql_error ()); // Փակել կապը mysql_close (); ?>

Տվյալների բազան թարմացվել է:

Օգտվողի մուտքագրումը տվյալների բազայում պահելը

Դուք հավանաբար արդեն հասկացել եք, որ դրա համար կարող եք ձև ստեղծել, ինչպես դաս 11 -ում, և ձևից արժեքները կարող են տեղադրվել SQL հայտարարության մեջ: Ենթադրենք դուք ունեք պարզ ձև:

Այս ձևը ներկայացվում է ֆայլին insert.phpորտեղ, ինչպես ցույց է տրված 11 -րդ դասում, կարող եք օգտվողի տեղեկությունները ստանալ ՝ պահանջելով ձևի բովանդակությունը: Այս կոնկրետ դեպքում SQL հայտարարությունը կարող է լինել այսպիսին.

strSQL = "ՄՏԱԵԼ մարդկանց մեջ (Անուն) արժեքներ (" ". $ _POST [" Անուն "]." ")"

Նմանապես, կարող եք տվյալներ պահանջել թխուկներից, նիստերից, հարցման տողերից և այլն:

Սկսնակների ամենատարածված սխալները

Սկզբում, հավանաբար, կստանաք մի շարք սխալ հաղորդագրություններ, երբ փորձում եք թարմացնել տվյալների բազան: Տվյալների բազայի հետ աշխատելիս սխալներ ամբողջությամբ թույլ չեն տրվում: Սխալ տեղադրված ստորակետը կարող է նշանակել, որ տվյալների բազան չի թարմացվում, և դուք կստանաք սխալի հաղորդագրություն: Ստորև մենք նկարագրում ենք ամենատարածված սխալները:

Տվյալների անվավեր տեսակ

Կարևոր է, որ սյունակի տվյալները և տիպը համապատասխանեն: Յուրաքանչյուր սյունակ կարող է պարունակել որոշակի տեսակի տվյալներ: Հետևյալ սքրինշոթը ցույց է տալիս մեր օրինակից «մարդիկ» աղյուսակի տվյալների տեսակները:

Սխալ է առաջանում, եթե, օրինակ, փորձում եք տեքստ կամ թիվ տեղադրել տվյալների դաշտում: Հետևաբար, հնարավորինս ճշգրիտ սահմանեք տվյալների տեսակը:

Տվյալների ամենատարածված տեսակները թվարկված են ստորև.

Իմաստը Տվյալների տեսակը Չափը
CHR
Տեքստ կամ տեքստի և թվերի համադրություն: Այն կարող է օգտագործվել նաև հաշվարկներում չօգտագործվող համարների համար (օրինակ ՝ հեռախոսահամարներ): Մինչև 255 նիշ `« Երկարություն »-ում նշված երկարությունը
ՏԵՔՍՏ
Տեքստի մեծ բլոկներ կամ տեքստի և թվերի համադրություն: Մինչև 65,535 նիշ
INT
Թվային տվյալներ մաթեմատիկական հաշվարկների համար: 4 բայթ
DATE
Ամսաթվերը YYY-MM-DD ձևաչափով 3 բայթ
TԱՄԱՆԱԿԸ
Hամանակը hh: mm: ss ձևաչափով 3 բայթ
ATԱՄԱՆԱԿԸ
Ամսաթիվը և ժամը ՝ YYY-MM-DD ձևաչափով hh: mm: ss 8 բայթ

SQL հայտարարություններ մեջբերումներով կամ հետադարձ շղթաներով

Եթե ​​փորձեք տեղադրել մեկ մեջբերում ("), կրկնակի մեջբերում (") կամ հետադարձ (\) նիշ պարունակող տեքստ, գրառումը չի տեղադրվի տվյալների բազայում: Լուծումը կայանում է նրանում, որ հետադարձ կապերը փոխարինվեն նիշերի դիմաց, որոնք պետք է մոնեմոնացվեն տվյալների բազայի հարցումների մեջ մտնելիս: