მონაცემების დამატება 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 = "სტუდენტებში ჩასმა (სახელი, გვარი, ელ.ფოსტა) ღირებულებები (" ტომ "," ფლაკონი "," [ელფოსტა დაცულია]")";

ის შეიყვანს მონაცემებს MySQL მონაცემთა ბაზაში. INSERT INTO არის განცხადება, რომელიც ამატებს მონაცემებს მითითებულ ცხრილში. ჩვენს მაგალითში მონაცემები დაემატება სტუდენტების ცხრილს.

შემდეგ მოდის სვეტების ჩამოთვლა, რომელშიც არის ჩასმული მნიშვნელობები: სახელი, გვარი, ელ. მონაცემები დაემატება ნაჩვენები თანმიმდევრობით. ჩვენ რომ დავწეროთ (ელ.ფოსტა, გვარი, სახელი), მნიშვნელობები სხვა თანმიმდევრობით დაემატებოდა.

შემდეგი ნაწილი არის VALUES ოპერატორი. აქ ჩვენ განვსაზღვრავთ მნიშვნელობებს სვეტებისთვის: name = Thom, lastname = Vial, email = [ელფოსტა დაცულია]

ჩვენ გავუშვით მოთხოვნა PHP კოდის გამოყენებით. კოდში SQL მოთხოვნები უნდა იყოს ციტირებული. კოდის შემდეგი ნაწილი (სტრიქონები 20-22) ამოწმებს წარმატებულია თუ არა ჩვენი მოთხოვნა:

if (mysqli_query ($ conn, $ sql)) (ექო "ახალი ჩანაწერი წარმატებით შეიქმნა";)

ეს კოდი აჩვენებს შეტყობინებას მოთხოვნის წარმატებით დასრულების შესახებ.

და ბოლო ნაწილი (22 - 24 სტრიქონი) აჩვენებს შეტყობინებას, თუ მოთხოვნა არ იყო წარმატებული:

სხვა (ეხმიანება "შეცდომა:". $ კვ. "
". 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 ბრძანება არასოდეს შესრულდება.

მომზადებული განცხადებების გამოსაყენებლად, თქვენ უნდა დაწეროთ ახალი ცვლადი, რომელიც ეძახის მონაცემთა ბაზის ობიექტის მოსამზადებელ () მეთოდს.

სწორი კოდი:

getMessage (); ) // ცვლადების დაყენება იმ პირისათვის, რომლის დამატებაც ჩვენ გვსურს მონაცემთა ბაზაში $ first_Name = "Thom"; $ last_Name = "ფლაკონი"; $ email = " [ელფოსტა დაცულია]"; // შექმენით ცვლადი, რომელიც იძახებს მონაცემთა ბაზის ობიექტის მოსამზადებელ () მეთოდს // SQL მოთხოვნა, რომლის შესრულებაც გსურთ, შეიყვანება როგორც პარამეტრი და ადგილის შემცველები იწერება ასე: placeholder_name $ my_Insert_Statement = $ my_Db_Connection-> მომზადება ( "ჩასვით სტუდენტებში (სახელი, გვარი, ელ.ფოსტა) VALUES (: first_name ,: last_name ,: email)"); // ახლა ჩვენ ვეუბნებით სკრიპტს, რომელი ცვლადი ეხება თითოეულ ადგილსამყოფელს, გამოიყენოს bindParam () მეთოდი // პირველი პარამეტრი არის ადგილსამყოფელი ზემოთ მოცემულ განცხადებაში, მეორე არის ცვლადი, რომელიც უნდა ეხებოდეს $ my_Insert_Statement-> bindParam (: first_name, $ first_Name); $ my_Insert_Statement-> bindParam (: last_name, $ last_Name); $ my_Insert_Statement-> bindParam (: ელ.ფოსტა, $ email); // შეასრულეთ მოთხოვნა ჩვენ მიერ განსაზღვრული მონაცემების გამოყენებით // შესრულების () მეთოდი აბრუნებს TRUE- ს წარმატების შემთხვევაში და FALSE თუ არა, გაძლევთ შესაძლებლობას დაბეჭდოთ თქვენი საკუთარი შეტყობინება, თუ ($ my_Insert_Statement-> შესრულდება ( )) (ექო "ახალი რეკო rdcreateds წარმატებით "; ) else (ექო "ჩანაწერის შექმნა შეუძლებელია";) // ამ ეტაპზე თქვენ შეგიძლიათ შეცვალოთ ცვლადი მონაცემები და გაუშვათ შეკითხვა მონაცემთა ბაზაში სხვა მონაცემების დამატებისთვის $ first_Name = "ჯონ"; $ last_Name = "სმიტი"; $ email = " [ელფოსტა დაცულია]"; $ my_Insert_Statement-> შესრულება (); // განახორციელეთ ხელახლა, როდესაც ცვლადი შეიცვლება, თუ ($ my_Insert_Statement-> შესრულება ()) (ექო" ახალი ჩანაწერი წარმატებით შეიქმნა ";) სხვაგან (ექო" ჩანაწერის შექმნა შეუძლებელია ";

28, 29 და 30 სტრიქონებზე ჩვენ ვიყენებთ მონაცემთა ბაზის ობიექტის bindParam () მეთოდს. ასევე არსებობს bindValue () მეთოდი, რომელიც ძალიან განსხვავდება წინაგან.

  • bindParam () - ეს მეთოდი აფასებს მონაცემებს, როდესაც შესრულებულია () მეთოდი მიღწეული. პირველად სკრიპტი აღწევს შესრულების () მეთოდს, ხედავს, რომ $ first_Name ემთხვევა "Thom" - ს. შემდეგ ის აკავშირებს ამ მნიშვნელობას და გაუშვებს მოთხოვნას. როდესაც სკრიპტი აღწევს მეორე შესრულების () მეთოდს, ის ხედავს, რომ $ first_Name ახლა ემთხვევა "ჯონს". შემდეგ ის აკავშირებს ამ მნიშვნელობას და იწყებს შეკითხვას ახალი მნიშვნელობებით. მნიშვნელოვანია გვახსოვდეს, რომ ჩვენ ერთხელ განვსაზღვრეთ მოთხოვნა და ხელახლა გამოვიყენეთ იგი სხვადასხვა მონაცემებით სკრიპტის სხვადასხვა წერტილში.
  • bindValue () - ეს მეთოდი აფასებს მონაცემებს bindValue () მიღწევისთანავე. მას შემდეგ, რაც $ first_Name დაყენებულია "Thom" - ზე, როდესაც bindValue () მიიღწევა, ის გამოყენებული იქნება ყოველ ჯერზე, როდესაც შესრულდება () $ my_Insert_Statement.
    გაითვალისწინეთ, რომ ჩვენ ვიყენებთ $ first_Name ცვლადს და მას მეორედ ვაძლევთ ახალ მნიშვნელობას. სკრიპტის გაშვების შემდეგ, ორივე სახელი მიეთითება მონაცემთა ბაზაში, მიუხედავად იმისა, რომ $ first_Name ცვლადს სკრიპტის ბოლოს აქვს მნიშვნელობა "John". გახსოვდეთ, რომ PHP ამოწმებს მთელ სკრიპტს გაშვებამდე.

თუ თქვენ სკრიპტს განაახლებთ bindParam bindValue– ით შეცვლის, თქვენ ორჯერ ჩადეთ "Thom Vial" მონაცემთა ბაზაში და ჯონ სმიტი იგნორირებული იქნება.

ნაბიჯი 3 - წარმატების დადასტურება და პრობლემის გადაჭრა

თუ მონაცემთა ბაზაში სტრიქონების ჩასმის მოთხოვნა წარმატებული იყო, ჩვენ ვნახავთ შემდეგ შეტყობინებას:

საერთო შეცდომების აღმოფხვრა

MySQLi

წინააღმდეგ შემთხვევაში, შეცდომის შეტყობინება გამოჩნდება. მაგალითად, მოდით დავუშვათ ერთი სინტაქსური შეცდომა კოდში და მივიღებთ შემდეგს:

კოდის პირველი ნაწილი კარგად არის, კავშირი წარმატებით შეიქმნა, მაგრამ SQL მოთხოვნა ვერ მოხერხდა.

"შეცდომა: ჩადეთ სტუდენტებში (სახელი, გვარი, ელ.ფოსტა) ღირებულებები (" ტომ "," ფლაკონი "," [ელფოსტა დაცულია]") თქვენ გაქვთ შეცდომა თქვენს SQL სინტაქსში; შეამოწმეთ სახელმძღვანელო, რომელიც შეესაბამება თქვენს MySQL სერვერის ვერსიას სწორი სინტაქსის გამოსაყენებლად" (სახელი, გვარი, ელ.ფოსტა) VALUES ("Thom", "Vial", " [ელფოსტა დაცულია]")" 1 ხაზზე "

მოხდა სინტაქსის შეცდომა, რამაც გამოიწვია სკრიპტის ჩავარდნა. შეცდომა აქ იყო:

$ sql = "სტუდენტებში ჩასმა (სახელი, გვარი, ელ.ფოსტა) ღირებულებები (" ტომ "," ფლაკონი "," [ელფოსტა დაცულია]")";

ჩვენ გამოვიყენეთ ხვეული სამაგრები ჩვეულებრივი ნაცვლად. ეს არასწორია და სკრიპტმა წარმოშვა სინტაქსის შეცდომა.

PDO

PDO კავშირის მე -7 ხაზზე, შეცდომის რეჟიმი დაყენებულია "ყველა გამონაკლისის ჩვენება". თუ სხვა მნიშვნელობა იყო მოცემული და მოთხოვნა ვერ ხერხდებოდა, ჩვენ არ მივიღებდით შეცდომების შეტყობინებებს.

ეს პარამეტრი უნდა იქნას გამოყენებული მხოლოდ სკრიპტის შემუშავებისას. როდესაც გააქტიურებულია, შეიძლება გამოჩნდეს მონაცემთა ბაზისა და ცხრილების სახელები, რომლებიც უკეთესად იმალება უსაფრთხოების მიზნით. ზემოთ აღწერილ შემთხვევაში, როდესაც ჩვეულებრივი სამაგრების ნაცვლად ხვეული სამაგრები გამოიყენებოდა, შეცდომის შეტყობინება ასე გამოიყურება:

საბედისწერო შეცდომა: გაუქმება "PDOException" შეტყობინებით "SQLSTATE: სინტაქსის შეცდომა ან წვდომა: 1064 თქვენ გაქვთ შეცდომა თქვენს SQL სინტაქსში; შეამოწმეთ სახელმძღვანელო, რომელიც შეესაბამება თქვენს MySQL სერვერის ვერსიას სწორი სინტაქსის გამოსაყენებლად "(სახელი, გვარი, ელ.ფოსტა) VALUES (" Thom "," Vial "," [ელფოსტა დაცულია]")" 1 ხაზზე "

სხვა შესაძლო პრობლემები:

  • სვეტები არასწორია (არარსებული სვეტები ან ორთოგრაფიული შეცდომა მათ სახელებში).
  • ერთი ტიპის მნიშვნელობა ენიჭება სხვადასხვა ტიპის სვეტს. მაგალითად, თუ თქვენ ცდილობთ ჩაწეროთ 47 ნომერი სახელის სვეტში, თქვენ მიიღებთ შეცდომას. თქვენ უნდა გამოიყენოთ სიმებიანი მნიშვნელობა ამ სვეტში. მაგრამ თუ ბრჭყალებში დავნიშნავდით რიცხვს (მაგალითად, "47") ის იმუშავებდა, რადგან ეს არის სტრიქონი.
  • მცდელობა იყო მონაცემების შეყვანა ცხრილში, რომელიც არ არსებობს. ასევე მართლწერის შეცდომა ცხრილის სახელში.

მონაცემების წარმატებით შეყვანის შემდეგ, ჩვენ ვნახავთ, რომ იგი დაემატა მონაცემთა ბაზას. ქვემოთ მოცემულია ცხრილის მაგალითი, რომელსაც დაემატა მონაცემები.

ამ პოსტში მინდა გითხრათ როგორ გადავიტანოთ მონაცემთა ბაზაში შეყვანილი მონაცემები ფორმაში... ასე რომ, ჩვენ ვქმნით მარტივ ფორმას, სადაც გვექნება ორი ველი: მომხმარებლის სახელი და მისი ელ.ფოსტა:

Თქვენი სახელი:
Თქვენი ელ. ფოსტა:


ეს ფორმა შეიძლება გამოყენებულ იქნას ახალი მომხმარებლის რეგისტრაციისათვის, ახალი ამბების გასაგზავნად, სტატისტიკის შესაგროვებლად და არაფრისთვის ... ზოგადად, მომხმარებელი ავსებს თავის მონაცემებს ამ ფორმაში: სახელი და ფოსტა, ღილაკზე დაწკაპუნება და შემდეგ მონაცემები გადადის php სკრიპტში:

$ name = $ _POST ["სახელი"]; $ email = $ _POST ["ელფოსტა"]; $ result = mysqli_query ("ჩაწერე მომხმარებელში (სახელი, ელ.ფოსტა) VALUES (" $ name "," $ email ")"); თუ ($ შედეგი) (ექო "მონაცემები წარმატებით შეინახება!";) სხვაგან (ექო "მოხდა შეცდომა, გთხოვთ სცადოთ ხელახლა.";)


რა ხდება ამ სკრიპტში? მოდი ახლა გავარკვიოთ!
ფორმაში შეტანილი მონაცემები POST მეთოდით გადაეცემა php სკრიპტს (რომელიც ზემოთ არის დაწერილი) და გლობალური მასივის $ _POST მონაცემების ფორმირება ხდება $ name და $ email ცვლადებად:

$ name = $ _POST ["სახელი"]; $ email = $ _POST ["ელფოსტა"];


მას შემდეგ, რაც ცვლადები მზად იქნება მონაცემთა ბაზაში შესასვლელად, ჩვენ ვადგენთ მოთხოვნას. მაგრამ პირველი, თქვენი სკრიპტები უკვე უნდა იყოს დაკავშირებული მონაცემთა ბაზასთან, თუ როგორ უნდა დაუკავშირდეთ მონაცემთა ბაზას, მე დავწერე ამ თემაში :.მოთხოვნა თავისთავად ასე გამოიყურება:

$ result = mysqli_query ("ჩაწერე მომხმარებელში (სახელი, ელ.ფოსტა) VALUES (" $ name "," $ email ")");


ამ კოდში ჩვენ აღვნიშნეთ, რომ შემდეგი ცვლადები დაემატება მომხმარებლის ცხრილში არსებულ სახელსა და ელ.ფოსტის უჯრედებს: $ name და $ email.
გარდა ამისა, თუ ყველაფერი კარგად წავიდა, ჩვენ მივიღებთ შეტყობინებას მდგომარეობიდან:

მონაცემები წარმატებით შეინახება!


თუ რაიმე პრობლემა იყო და მონაცემები არ იყო შეყვანილი, ჩვენ მივიღებთ შეცდომის შეტყობინებას:

მოხდა შეცდომა, გთხოვთ სცადოთ ხელახლა.


Სულ ეს არის!

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

თუ გსურთ, შეგიძლიათ დაამატოთ მეტი ველი ინფორმაციის შეყვანისთვის, მაგალითად, ჩვენ უნდა დავამატოთ ველი მომხმარებლის ქალაქში შესასვლელად. ჩვენ უკვე გვაქვს მზა სკრიპტი (დაწერილია ზემოთ), ახლა ჩვენ უბრალოდ ვამატებთ ველს Შენი ქალაქი, ჩვენ დავასახელებთ ცვლადს: $ city. ასე რომ, მონაცემების შეყვანის ფორმაში, შემდეგ:

Თქვენი ელ. ფოსტა:


დამატება:

Შენი ქალაქი:


Php სკრიპტში, შემდეგ:

$ email = $ _POST ["ელფოსტა"];


დამატება:

$ city = $ _POST ["ქალაქი"];


და რა თქმა უნდა, ჩვენ ვამატებთ მოთხოვნას, ასე:

$ result = mysqli_query ("მომხმარებლის ჩაწერა (სახელი, ელფოსტა, ქალაქი) VALUES (" $ name "," $ email "," $ city ")");


აი რა უნდა დაასრულო:
შეყვანის ფორმა:

Თქვენი სახელი:
Თქვენი ელ. ფოსტა:
Შენი ქალაქი:


სკრიპტი:

$ name = $ _POST ["სახელი"]; $ email = $ _POST ["ელფოსტა"]; $ city = $ _POST ["ქალაქი"]; $ result = mysqli_query ("მომხმარებლის ჩაწერა (სახელი, ელფოსტა, ქალაქი) VALUES (" $ name "," $ email "," $ city ")"); თუ ($ შედეგი == ჭეშმარიტი) (ექო "მონაცემები წარმატებით იქნა შენახული!";) სხვაგან (ექო "მოხდა შეცდომა, გთხოვთ სცადოთ ხელახლა.";)


როგორც ხედავთ, რთული არაფერია! საჭიროების შემთხვევაში, შეგიძლიათ დაამატოთ სხვა ველი, და მეტი და მეტი ...

ამ სტატიაში ჩვენ გავაანალიზებთ ალბათ ზოგიერთ უმნიშვნელოვანესს SQL მოთხოვნები... ის შეკითხვები მონაცემთა ბაზის ცხრილიდან ჩანაწერების დამატებისა და ამოღების მიზნით... მას შემდეგ, რაც ძალიან ხშირად აუცილებელია დაამატეთ ახალი ჩანაწერები ცხრილშიდა ამის გაკეთება ავტომატურ რეჟიმში, მაშინ ეს მასალა შესასწავლად არის საჭირო.

Დაწყება SQL მოთხოვნა ცხრილში ახალი ჩანაწერის დასამატებლად:

მომხმარებლების ჩასმა (შესვლა, გავლა) მნიშვნელობები ("TestUser", "123456")

ჩანაწერის დამატებისას, პირველი ბრძანება არის " ᲩᲐᲓᲔᲗ", შემდეგ ცხრილის სახელი, რომელშიც ჩავწერთ ჩანაწერს. შემდეგ მოდის ველების სახელები, რომელთა შევსებაც გვინდა ფრჩხილებში. შემდეგ კი ფრჩხილებში სიტყვის შემდეგ" ღირებულებები"ჩვენ ვიწყებთ იმ სფეროების მნიშვნელობების ჩამოთვლას, რომლებიც ჩვენ შევარჩიეთ. ამ მოთხოვნის შესრულების შემდეგ, ახალი ჩანაწერი გამოჩნდება ჩვენს ცხრილში.

ხან სჭირდება განაახლეთ ჩანაწერი ცხრილში, ამისათვის არის შემდეგი SQL შეკითხვა:

მომხმარებლების განახლება SET login = "TestUser2", pass = "1234560" WHERE login = "TestUser"

ეს შეკითხვა უფრო რთულია, რადგან მას აქვს კონსტრუქცია " სად", მაგრამ ამის შესახებ უფრო ქვემოთ. პირველი მოდის ბრძანება" განახლება"რასაც მოჰყვება მაგიდის სახელი, რასაც მოჰყვება" დაყენება"ჩვენ აღწერს ყველა იმ სფეროს ღირებულებებს, რომელთა შეცვლაც ჩვენ გვინდა. ეს იქნებოდა მარტივი, მაგრამ ჩნდება კითხვა:" რომელი ჩანაწერი უნდა განაახლოთ?". ამისათვის არსებობს" სად". ამ შემთხვევაში ჩვენ ვაახლებთ ჩანაწერს, ველს" შესვლა"რაც მნიშვნელოვანია" TestUserგთხოვთ გაითვალისწინოთ, რომ თუ არსებობს რამდენიმე ასეთი ჩანაწერი, მაშინ აბსოლუტურად ყველაფერი განახლდება! ამის გაგება ძალიან მნიშვნელოვანია, წინააღმდეგ შემთხვევაში თქვენ რისკავთ თქვენი მაგიდის დაკარგვას.

მოდით ვისაუბროთ ცოტა მეტი " სად". თანასწორობის მარტივი ტესტების გარდა, არსებობს ასევე უთანასწორობა, ასევე ლოგიკური ოპერაციები: დადა ან.

მომხმარებლების განახლება SET login = "TestUser2", pass = "1234560" WHERE id< 15 AND login="TestUser"

ის SQL შეკითხვაგანაახლებს იმ ჩანაწერებს პირადობის მოწმობარომლებიც ნაკლებია 15 დაველი " შესვლა"აქვს მნიშვნელობა" TestUser". იმედი მაქვს, რომ თქვენ მიხვდით დიზაინს." სად"იმიტომ, რომ ეს ძალიან მნიშვნელოვანია. ზუსტად." სად"გამოიყენება როდის ჩანაწერების მოტანა ცხრილებიდანდა ეს არის ყველაზე ხშირად გამოყენებული ამოცანა მონაცემთა ბაზებთან მუშაობისას.

და ბოლოს, უბრალო SQL შეკითხვა ცხრილიდან ჩანაწერების წასაშლელად:

მომხმარებლებისგან წაშლა WHERE login = "TestUser2"

ბრძანების შემდეგ " წაშლა აქედან"არის ცხრილის სახელი, რომელშიც გსურთ ჩანაწერების წაშლა. შემდეგი, ჩვენ აღწერს" WHERE "კონსტრუქციას. თუ ჩანაწერი შეესაბამება აღწერილ პირობებს, ის წაიშლება. სად", მათი ნებისმიერი რაოდენობის წაშლა შესაძლებელია.

ამ გაკვეთილზე ჩვენ ვისწავლით თუ როგორ შეიყვანოთ მომხმარებლის მიერ შეყვანილი მონაცემები ფორმაში MySql მონაცემთა ბაზაში. თქვენ შეისწავლით თუ როგორ უნდა დაუკავშიროთ MySql მონაცემთა ბაზას ვებ გვერდის კოდიდან, ასევე დაამუშაოთ და შეიყვანოთ მონაცემები მონაცემთა ბაზაში.


ბოლო გაკვეთილზე მე გითხარით, თუ როგორ უნდა დააინსტალიროთ დენვერი თქვენს კომპიუტერზე, როგორ შექმნათ თქვენი საკუთარი მონაცემთა ბაზა, მისი მომხმარებელი, როგორ შევქმნათ ცხრილი მონაცემთა ბაზაში და ჩვენ შეავსეთ იგი ერთი ჩანაწერით.

ამ გაკვეთილზე ჩვენ შევქმნით html დოკუმენტს მომხმარებლის ინფორმაციის შესასვლელად, ასევე php ფაილს, რომელიც ამუშავებს ამ ინფორმაციას, რომელიც დაამუშავებს მონაცემებს, დაუკავშირდება MySql მონაცემთა ბაზას და ჩავსვამ იქ ახალ ჩანაწერებს.

სიტყვებიდან საქმეებზე გადასვლა, დავიწყოთ.

დაამატეთ პერსონალური მონაცემები MySql მონაცემთა ბაზაში ვებ გვერდიდან

პირველი ნაბიჯი: შექმენით html ფორმა მონაცემების შეყვანისთვის

თავიდანვე უნდა მოვემზადოთ php, MySql– თან მუშაობისთვის და ადგილობრივ კომპიუტერზე დაწერილი კოდის შესამოწმებლად. Ამისთვის:

1. გაუშვით დენვერი თქვენს კომპიუტერში.

2. გახსენით დენვერის მიერ შექმნილი ვირტუალური დისკი (მაგალითად, მე მაქვს ეს დისკი "Z"). გახსენით იგი, შემდეგ: home - localhost - www - შექმენით იქ ახალი საქაღალდე და დაარქვით სახელი (მე დავასახელებ მას "db1").

3. თუ თქვენ მუშაობთ Adobe Dreamweaver– ში, მაშინ გადადით საიტის მენეჯერზე, იქ დააწკაპუნეთ ღილაკზე „ახალი“, შეარჩიეთ ბილიკი ახლად შექმნილი საქაღალდისკენ, როგორც ზემოთ მოცემულ ველში შეგიძლიათ მიუთითოთ სახელი საიტზე, შემდეგ კი დააჭირეთ შენახვას - შესრულებულია. ყოველივე ამის შემდეგ, თქვენი საქაღალდე გამოჩნდება Adobe Dreamweaver– ის მარჯვენა სარკმელში.

1. ახლა ჩვენ შევქმნით რეგულარულ html ფაილს (დავარქვათ info_form.html და შევინახოთ ჩვენს მიერ შექმნილ db1 ​​საქაღალდეში) და დავწეროთ ფორმის კოდი იქ ინფორმაციის შეყვანისთვის. New_db მონაცემთა ბაზაში ჩვენს მომხმარებელთა ცხრილში არის 4 ველი, რომელთა შევსებაც მომხმარებელს შეეძლება (id ველი ავტომატურად შეივსება). ამის საფუძველზე შეგიძლიათ შექმნათ ასეთი კოდი:

Უსახელო დოკუმენტი










აქ ჩვენი ფორმის "მოქმედება" პარამეტრში არის ფაილი ფორმა. php... ეს იქნება დამმუშავებელი ფაილი, რომელსაც ჩვენ შემდგომ შევქმნით.

მოდით, ასევე შევქმნათ style.css ფაილი ჩვენი ფორმის შესაქმნელად. ის უკვე შედის კოდში, ასე რომ რჩება მხოლოდ მისი შექმნა, მოთავსება იმავე საქაღალდეში, როგორც html ფაილი და ჩაწერეთ მასში შემდეგი კოდი:

კორპუსი (სიგანე: 400 პიქსელი; ზღვარი: 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 ფაილი, დავარქვათ მას სახელი დაკავშირება. 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 მონაცემთა ბაზის ცხრილში. ახლა მინდა ოდნავ შევეხო იმ ფორმატს, რომელშიც ჩვენი მონაცემები არის ჩასმული.

პირველ რიგში, თქვენ უნდა გაუფრთხილდეთ სიტუაციას, როდესაც პირმა, რომელიც შეავსებს ფორმას, შეიძლება განათავსოს არასაჭირო ადგილები ინფორმაციის შეყვანის დასაწყისში. მათ უნდა გაჭრა.

მეორეც, ჩვენ გვაქვს Facebook ველი. თუ მომავალში ჩვენ გვსურს ამ ინფორმაციის ჩვენება ბმულის სახით, მაშინ უნდა ვიზრუნოთ, რომ ამ ველში არსებული მონაცემები შენახული იყოს სწორი ფორმატით (ანუ "http://www.facebook.com/ facebook id"). მაგრამ მომხმარებელი ყოველთვის არ შეიყვანს ამ მონაცემებს ისე, როგორც ჩვენ გვჭირდება. მას შეუძლია შეიყვანოს: "www.facebook.com/ facebook id", "facebook.com/ facebook id" ან უბრალოდ "/ facebook id".

ეს სიტუაციები თავიდან უნდა იქნას აცილებული. ამისათვის მოდით შეცვალოთ ჩვენი კოდი. ჩვენ ვწყვეტთ შესაძლო დამატებით სივრცეებს ​​ფუნქციის გამოყენებით მორთვა, და ფუნქცია შეამოწმებს ფეისბუქისთვის შეყვანილი url- ის სისწორეს preg_match... ამრიგად, form.php ფაილის მთელი კოდი ასე გამოიყურება:

Უსახელო დოკუმენტი ახალი ჩანაწერი ჩასმულია მონაცემთა ბაზაში!

"; ?>

ფუნქციის შესახებ preg_match:
ეს არის ფუნქცია რეგულარული გამონათქვამების მოსაძებნად.

ფრჩხილებში პირველი პარამეტრი არის რეგულარული გამოთქმა, მეორე არის სტრიქონი საძიებლად.

ფუნქცია აბრუნებს მხოლოდ პირველ მატჩს: 0 - თუ შესატყვისები არ არის, 1 - თუ არის შესატყვისი.

ახლა შეეცადეთ შეგნებულად შეავსოთ ფორმა, გააკეთოთ არასაჭირო ადგილები რომელიმე ველის შევსების დასაწყისში და შეიყვანოთ მისამართი facebook– ისთვის http: // ან თუნდაც შეიყვანოთ მხოლოდ facebook– ის ID. გაგზავნეთ მოთხოვნა, შემდეგ კი გადადით მონაცემთა ბაზაში და ნახავთ, რომ მიუხედავად სრულყოფილად შევსებისა, მონაცემებს ზუსტად ისეთი ფორმა აქვს, რაც ჩვენ გვჭირდება.

ამით დავამთავრებ ამ გაკვეთილს. თქვენ შეგიძლიათ გადმოწეროთ ამ გაკვეთილის ყველა ფაილი წყაროში (უბრალოდ ნუ დაგავიწყდებათ პარამეტრების შეცვლა თქვენს კავშირში connect.php ფაილში).

შემდეგ გაკვეთილზე ჩვენ ვისწავლით თუ როგორ ამოვიღოთ ინფორმაცია MySql მონაცემთა ბაზიდან, შეარჩიეთ საჭირო ჩანაწერები და აჩვენეთ ისინი ეკრანზე. იმისათვის, რომ არ გამოტოვოთ შემდეგი გაკვეთილი, გამოიწერეთ ბლოგის განახლებები ხელმოწერის ფორმის გამოყენებით, რომელსაც ქვემოთ ხედავთ.

დატოვეთ თქვენი კომენტარები და გაუზიარეთ მეგობრებს სოციალური მედიის ღილაკების გამოყენებით.

გისურვებთ წარმატებებს და გნახავთ შემდეგ გაკვეთილზე!

ამ გაკვეთილში ჩვენ შევხედავთ, თუ როგორ უნდა ჩავსვათ მონაცემები მონაცემთა ბაზაში პირდაპირ თქვენი PHP სკრიპტებიდან.

მონაცემების ჩასმა SQL გამოყენებით

თქვენ იყენებთ SQL მონაცემებს მონაცემთა ბაზაში ჩასასმელად, ისევე როგორც SQL მონაცემთა ბაზებისა და ცხრილების შესაქმნელად. SQL მოთხოვნის სინტაქსი შემდეგია:

ჩაწერეთ მაგიდის სახელი (სვეტი 1, სვეტი 2, ...) ღირებულებები (მნიშვნელობა 1,ღირებულება 2, ...)

როგორც ხედავთ, შეგიძლიათ განაახლოთ რამოდენიმე სვეტი ერთ SQL განცხადებაში, მათი მითითებით მძიმით გამოყოფილ სიაში. რა თქმა უნდა, თქვენ ასევე შეგიძლიათ მიუთითოთ მხოლოდ ერთი სვეტი და ერთი მნიშვნელობა. სვეტები, რომლებიც არ არის ნახსენები ამ SQL განცხადებაში, ცარიელი დარჩება.

მაგალითი: ახალი პირის ჩასმა ცხრილში

ამ მაგალითში ჩვენ ვიყენებთ მონაცემთა ბაზას მე -18 გაკვეთილიდან. ვთქვათ, ჩვენ გვინდა, რომ ჩავწეროთ ადამიანი მონაცემთა ბაზაში. Ეს შეიძლება იყოს გუს ბატიტელეფონის ნომრით 99887766 და დაბადების თარიღი 1964-04-20 .

SQL განცხადება შეიძლება ასე გამოიყურებოდეს:

$ strSQL = "ჩაწერე ადამიანებში (სახელი, გვარი, ტელეფონი, დაბადების თარიღი) ღირებულებები (" გუსი "," ბატი "," 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. "ღირებულებები ("; $ strSQL = $ strSQL. "" გუსი ","; $ strSQL = $ strSQL. "" ბატი ","; $ strSQL = $ strSQL. "" 99887766 ","; $ strSQL = $ strSQL. "" 1964-04-20 ")"; // SQL განცხადება შესრულებულია mysql_query ($ strSQL) ან die (mysql_error ()); // კავშირის დახურვა mysql_close (); ?>

მონაცემთა ბაზა განახლებულია!

მონაცემთა შენახვა მონაცემთა ბაზაში

თქვენ ალბათ უკვე მიხვდით, რომ თქვენ შეგიძლიათ შექმნათ ფორმა ამისთვის, როგორც მე –11 გაკვეთილში, ხოლო ფორმებიდან ღირებულებები შეიძლება ჩასვათ SQL განცხადებაში. ვთქვათ, თქვენ გაქვთ მარტივი ფორმა:

ეს ფორმა გადაეცემა ფაილს ჩასმა. phpსადაც, როგორც ნაჩვენებია მე –11 გაკვეთილში, შეგიძლიათ მიიღოთ მომხმარებლის შეყვანა ფორმის შინაარსის მოთხოვნით. ამ კონკრეტულ შემთხვევაში, SQL განცხადება შეიძლება იყოს ასეთი:

strSQL = "ჩაწერე ადამიანებში (სახელი) ღირებულებები (" ". $ _POST [" სახელი "]." ")"

ანალოგიურად, თქვენ შეგიძლიათ მოითხოვოთ მონაცემები ქუქი -ჩანაწერებისთვის, სესიებისთვის, მოთხოვნის სტრიქონებისთვის და ა.

ყველაზე გავრცელებული დამწყებთათვის დაშვებული შეცდომები

თავდაპირველად, თქვენ ალბათ მიიღებთ უამრავ შეცდომის შეტყობინებას მონაცემთა ბაზის განახლების მცდელობისას. მონაცემთა ბაზასთან მუშაობისას, შეცდომები სრულიად მიუღებელია. არასწორად განთავსებული მძიმით შეიძლება ნიშნავდეს რომ მონაცემთა ბაზა არ განახლდება და თქვენ მიიღებთ შეცდომის შეტყობინებას. ქვემოთ ჩვენ აღწერს ყველაზე გავრცელებულ შეცდომებს.

მონაცემთა ტიპი არასწორია

მნიშვნელოვანია, რომ სვეტის მონაცემები და მონაცემთა ტიპი ემთხვეოდეს. თითოეული სვეტი შეიძლება შეიცავდეს გარკვეული ტიპის მონაცემებს. ქვემოთ მოყვანილი ეკრანის სურათი გვიჩვენებს "ხალხის" ცხრილის მონაცემების ტიპებს ჩვენი მაგალითიდან.

შეცდომა დაუშვებელია, თუ, მაგალითად, თქვენ ცდილობთ ტექსტის ან რიცხვის ჩასმა მონაცემთა ველში. აქედან გამომდინარე, დააყენეთ მონაცემთა ტიპი რაც შეიძლება ზუსტად.

მონაცემთა ყველაზე გავრცელებული ტიპები ჩამოთვლილია ქვემოთ:

მნიშვნელობა Მონაცემთა ტიპი Ზომა
CHR
ტექსტი ან ტექსტისა და რიცხვების კომბინაცია. ის ასევე შეიძლება გამოყენებულ იქნას იმ რიცხვებისთვის, რომლებიც არ გამოიყენება გამოთვლებში (მაგ. ტელეფონის ნომრები). 255 სიმბოლომდე - "სიგრძე" -ში მითითებული სიგრძე
ტექსტი
ტექსტის დიდი ბლოკები ან ტექსტისა და რიცხვების კომბინაცია. 65,535 სიმბოლომდე
INT
რიცხვითი მონაცემები მათემატიკური გამოთვლებისთვის. 4 ბაიტი
DATE
თარიღები YYY-MM-DD ფორმატში 3 ბაიტი
დრო
დრო hh: mm: ss ფორმატში 3 ბაიტი
თარიღი
თარიღი და დრო YYY-MM-DD ფორმატში hh: mm: ss 8 ბაიტი

SQL განცხადებები ბრჭყალებით ან უკანა ხაზებით

თუ თქვენ ცდილობთ ჩასვათ ტექსტი, რომელიც შეიცავს ერთ ციტატას ("), ორმაგ ციტატას (") ან უკანა ხაზს (\) სიმბოლოებს, ჩანაწერი არ შეიყვანება მონაცემთა ბაზაში. გამოსავალი მდგომარეობს იმაში, რომ შეცვალოთ უკანა ხაზები სიმბოლოების წინ, რომლებიც უნდა იყოს მნემონიზებული მონაცემთა ბაზის მოთხოვნებში ჩასმისას.