MySQL'e veri yazmak için php betiği. MySQL veritabanına php yazma. Pratik örnekler. Yaygın hataları ortadan kaldırmak

  • 20.06.2020

Ders esas alınacak geri bildirim formu hemen hemen her sitede gereklidir.

Adım bir: Veritabanı oluşturma MySQL

Açığız phpMyAdmin(temel pakete dahil Denwer`a) ve adıyla bir taban oluşturun" test_base", kodlamayı seçin" cp1251_general_ci".

İkinci adım: içinde bir tablo oluşturma MySQL kullanarak SQL sorguları

Elbette standart araçları kullanarak bir tablo oluşturabilirsiniz. phpMyAdmin, ancak oluşturulan tablonun yapısı açıkça görülecektir.

"adlı bir tablo oluşturun test_table"ve adları olan altı alanla:
"isim" - kullanıcı adları burada saklanacaktır;
"e-posta" - kullanıcıların e-posta adresleri burada saklanacaktır;
"tema" - mesajın konusu burada saklanacaktır;
"mesaj" - mesajlar burada saklanacaktır;
"veri" - mesajın gönderildiği tarih burada saklanacaktır;
"id" - kayıt (satır) kimlik numarası, anahtar alan.

SQL sorgusu:
tablo oluştur test_table (
id int (11) boş otomatik artış değil,
isim varchar (255) boş değil,
e-posta varchar (255) boş değil,
tema varchar (255) boş değil,
mesaj metni boş değil,
veri tarihi boş değil,
birincil anahtar (kimlik)
);

Adım üç: Form oluşturma

dizin.html:

MySQL Kaydetme Formu

MySQL'de veri kaydeden bir form örneği

























istek gönderme
İsim:
E-posta:
Mesaj Konusu:
İleti:
























Adım dört: Form işleyicisi oluşturma " save_form.php"alınan verileri kaydederek MySQL

save_form.php:





/ * Verilerin saklanacağı MySQL tablosu * /
$ tablo = "test_table";

/ * Bağlantı oluştur * /

/ * Geçerli tarihi belirleyin * /
$ cdate = tarih ("E-m-d");

/ * Tabloya bilgi eklemek için bir sorgu oluşturun
isim ... tarih - veritabanındaki belirli alanların adı;
$ _POST ["test_name"] ... $ _POST ["test_mess"] içinde - bu değişkenler * / biçiminden alınan verileri içerir
$ sorgu = "INSERT INTO $ tablo SET adı =" ". $ _ POST [" test_name "]." ", email =" ". $ _ POST [" test_mail "]." ",
tema = "". $ _ POST ["test_theme"]. "", mesaj = "". $ _ POST ["test_mess"]. "", data = "$ cdate" ";

/ * Bağlantıyı kapatın * /
mysql_close();

/ * Başarılı kaydetme durumunda, bir mesaj ve bir dönüş bağlantısı görüntüleyin * /
Eko ("


Veri başarıyla kaydedildi!



geri gel
");

Beşinci adım: Kaydedilen verilerin çıktısı " view_data.php"

view_data.php:

/ * Veritabanına bağlanın * /
$ hostname = "localhost"; // sunucu adı / yolu, MySQL ile
$ kullanıcı adı = "kök"; // kullanıcı adı (Denwer'ın varsayılanı "root"tur)
$şifre = ""; // kullanıcı şifresi (Denwer'de varsayılan olarak şifre yoktur, bu parametre boş bırakılabilir)
$ dbName = "test_base"; // veri tabanı ismi


$ tablo = "test_table";

/ * Bağlantı oluştur * /
mysql_connect ($ ana bilgisayar adı, $ kullanıcı adı, $ parola) veya die ("Bağlantı oluşturamıyorum");

/ * Veritabanını seçin. Bir hata oluşursa yazdırın * /
mysql_select_db ($ dbName) veya die (mysql_error ());

/ * "ad", "e-posta", "tema" alanlarından veri çıkarmak için bir istek oluşturuyoruz,
"mesaj", "test_table"ın "verileri" * /
$ sorgu = "ID, ad, e-posta, tema, mesaj, $ tablosundan veri SEÇ";

/ * İsteği yürütüyoruz. Bir hata oluşursa, gösterin. * /


Eko ("

MySQL'den veri çıkışı

MySQL tablosundan önceden kaydedilmiş verilerin çıktısını alma










");



Eko "

\ n ";
Eko " \ n ";
Eko " \ n ";
Eko " \ n ";
Eko " \ n ";
Eko " \ n ";
Eko " \ n\ n ";
}

Eko ("

# başvuru tarihi Kullanıcı adları E-posta Kullanıcıları Mesaj Konusu Kullanıcı mesajları
". $ satır [" id "]."". $ satır [" veri "]."". $ satır [" isim "]."". $ satır [" e-posta "]."". $ satır [" tema "]."". $ satır [" mesaj "]."
\ n ");

/ * Bağlantıyı kapatın * /
mysql_close();

Altıncı adım: Veritabanından kayıtları kaldırma " del_data.php"

del_data.php:

/ * Veritabanına bağlanın * /
$ hostname = "localhost"; // sunucu adı / yolu, MySQL ile
$ kullanıcı adı = "kök"; // kullanıcı adı (Denwer'ın varsayılanı "root"tur)
$şifre = ""; // kullanıcı şifresi (Denwer'de varsayılan olarak şifre yoktur, bu parametre boş bırakılabilir)
$ dbName = "test_base"; // veri tabanı ismi

/ * Verilerin depolandığı MySQL tablosu * /
$ tablo = "test_table";

/ * Bağlantı oluştur * /
mysql_connect ($ ana bilgisayar adı, $ kullanıcı adı, $ parola) veya die ("Bağlantı oluşturamıyorum");

/ * Veritabanını seçin. Bir hata oluşursa yazdırın * /
mysql_select_db ($ dbName) veya die (mysql_error ());

/ * Sil bağlantısı tıklandıysa, girişi silin * /
$ del = $ sorgu = "$ tablosundan sil burada (id =" $ del ")";
/ * İsteği yürütüyoruz. Bir hata oluşursa, gösterin. * /
mysql_query ($ sorgu) veya die (mysql_error());



/ * İsteği yürütüyoruz. Bir hata oluşursa, gösterin. * /
$ res = mysql_query ($ sorgu) veya die (mysql_error ());

$ satır = mysql_num_rows ($ res);

/ * Tablodaki verileri göster * /
Eko ("

MySQL'den Verileri Boşaltma ve Silme

MySQL tablosundan önceden kaydedilmiş verileri görüntüleme ve silme











");

/ * Belirli alanlardan oluşan bir veri tabanından veri çıktısı almak için döngü * /
while ($ satır = mysql_fetch_array ($ res)) (
Eko "

\ n ";
Eko " \ n ";
Eko " \ n ";
Eko " \ n ";
Eko " \ n ";
Eko " \ n ";
Eko " \ n ";
/ * Alanı silmek için bir bağlantı oluştur * /
Eko " \ n ";
Eko "\ n ";
}

Eko ("

# başvuru tarihi Kullanıcı adları E-posta Kullanıcıları Mesaj Konusu Kullanıcı mesajları Siliniyor
". $ satır [" id "]."". $ satır [" veri "]."". $ satır [" isim "]."". $ satır [" e-posta "]."". $ satır [" tema "]."". $ satır [" mesaj "]."Silmek
\ n ");

/ * Bağlantıyı kapatın * /
mysql_close();

Yedinci adım: Veritabanındaki kayıtları düzenleme ve güncelleme " update_data.php"

update_data.php:

/ * Veritabanına bağlanın * /
$ hostname = "localhost"; // sunucu adı / yolu, MySQL ile
$ kullanıcı adı = "kök"; // kullanıcı adı (Denwer'ın varsayılanı "root"tur)
$şifre = ""; // kullanıcı şifresi (Denwer'de varsayılan olarak şifre yoktur, bu parametre boş bırakılabilir)
$ dbName = "test_base"; // veri tabanı ismi

/ * Verilerin depolandığı MySQL tablosu * /
$ tablo = "test_table";

/ * Bağlantı oluştur * /
mysql_connect ($ ana bilgisayar adı, $ kullanıcı adı, $ parola) veya die ("Bağlantı oluşturamıyorum");

/ * Veritabanını seçin. Bir hata oluşursa yazdırın * /
mysql_select_db ($ dbName) veya die (mysql_error ());

/ * Düzenle düğmesine basıldıysa, değişiklik yapın * /
if (@ $ gönder_düzenle) (
$ sorgu = "GÜNCELLEME $ tablo SET adı =" $ test_name ", e-posta =" $ test_mail ", tema =" $ test_theme ", mesaj =" $ test_mess "NEREDE id =" $ güncelleme "";
/ * İsteği yürütüyoruz. Bir hata oluşursa, gösterin. * /
mysql_query ($ sorgu) veya die (mysql_error());
}

/ * Tüm veritabanını $ res değişkenine ekleyin * /
$ sorgu = "$ tablosundan * SEÇ";
/ * İsteği yürütüyoruz. Bir hata oluşursa, gösterin. * /
$ res = mysql_query ($ sorgu) veya die (mysql_error ());
/ * Veritabanındaki kayıtların sayısını öğrenin * /
$ satır = mysql_num_rows ($ res);

/ * Tablodaki verileri göster * /
Eko ("

Verileri düzenleme ve güncelleme

MySQL tablosundaki verileri düzenleme ve güncelleme


");

/ * Belirli alanlardan oluşan bir veri tabanından veri çıktısı almak için döngü * /
while ($ satır = mysql_fetch_array ($ res)) (
Eko "

\ n ";
Eko " \ n ";
Eko " \ n ";
Eko " \ n ";
Eko " \ n ";
Eko "\ n ";
Eko " \ n ";
Eko "\ n ";
Eko " \ n ";
Eko "\ n ";
Eko " \ n ";
Eko "\ n ";
Eko " \ n ";
Eko "\ n ";
Eko " \ n ";
Eko "
# ". $ satır [" id "]."
". $ satır [" veri "]."
Kullanıcı adı:
Kullanıcı e-postası:
Mesaj Konusu:
İleti:
\ n \ n ";
}

/ * Bağlantıyı kapatın * /
mysql_close();

Hepsi bu, güzel kodlama: 1133:

_________________________________

Bu yazıda, MySQL veritabanına satır eklemek için PHP'nin nasıl kullanılacağına bakacağız.

Adım 1 - tablonun oluşturulması

İlk olarak, veriler için bir tablo oluşturmanız gerekir. Bu, barındırma kontrol panelinizde phpMyAdmin kullanılarak yapılabilecek basit bir prosedürdür.

phpMyAdmin'e giriş yaptıktan sonra şöyle bir arayüz göreceksiniz:
"Tablo oluştur" butonuna tıklayarak u266072517_name veritabanında Student isimli bir tablo oluşturalım. Bundan sonra, gerekli tüm tablo parametrelerini ayarladığımız yeni bir sayfa göreceğiz:

Bu, bir tablo için kullanılabilecek ve tabloların/veritabanlarının yapısı hakkında daha fazla bilgi alabileceğiniz en basit ayardır.

Sütun seçenekleri:

  • Ad, tablonun en üstünde görünen sütunun adıdır.
  • Tür - sütunun türü. Örneğin varchar'ı seçtik çünkü string değerleri gireceğiz.
  • Uzunluk / Değerler - Bu sütundaki bir girişin sahip olabileceği maksimum uzunluğu belirtmek için kullanılır.
  • Dizin - "Kimlik" alanı için "Birincil" dizini kullandık. Tablo oluştururken birincil anahtar olarak yalnızca bir sütun kullanmanız önerilir. Bir tablodaki kayıtları listelemek için kullanılır ve bir tablo oluştururken gereklidir. Ayrıca "Otomatik Artış" anlamına gelen "A_I"yi de işaretledim - kayıt sayısını (1,2,3,4, ...) otomatik olarak atama parametresi.
    Kaydet düğmesine tıklayın ve tablo oluşturulacaktır.

Adım 2. MySQL'e veri eklemek için PHP kodu yazmak.

Seçenek 1 - MySQLi yöntemi

İlk önce veritabanına bir bağlantı kurmanız gerekir. Daha sonra SQL INSERT sorgusunu kullanıyoruz. Komple kod örneği:

". mysqli_error ($ bağlantı);) mysqli_close ($ bağlantı);?>

Kodun ilk kısmı (satır 3 - 18) veritabanına bağlanmak içindir.

19. satırla başlayalım:

$ sql = "Öğrencilere GİRİN (adı, soyadı, e-postası) DEĞERLER (" Thom "," Flakon "," [e-posta korumalı]")";

MySQL veritabanına veri ekler. INSERT INTO, belirtilen tabloya veri ekleyen bir ifadedir. Örneğimizde, veriler Öğrenciler tablosuna eklenir.

Ardından, değerlerin eklendiği sütunların numaralandırılması gelir: ad, soyadı, e-posta. Veriler gösterilen sırayla eklenecektir. Yazmış olsaydık (e-posta, soyad, ad) değerler farklı bir sırada eklenirdi.

Sonraki kısım DEĞERLER operatörüdür. Burada sütunlar için değerler belirtiyoruz: ad = Thom, soyadı = Şişe, e-posta = [e-posta korumalı]

PHP kodunu kullanarak bir istek çalıştırdık. Kodda SQL sorguları alıntılanmalıdır. Kodun sonraki kısmı (satır 20-22), isteğimizin başarılı olup olmadığını kontrol eder:

if (mysqli_query ($ conn, $ sql)) (echo "Yeni kayıt başarıyla oluşturuldu";)

Bu kod, isteğin başarıyla tamamlandığı hakkında bir mesaj görüntüler.

Ve son kısım (22 - 24 satır), istek başarısız olursa bir bildirim görüntüler:

else (echo "Hata:". $ sql. "
". mysqli_error ($ bağlantı);)

Seçenek 2 - PHP Veri Nesnesi (PDO) Yöntemi

Öncelikle yeni bir PDO nesnesi oluşturarak veritabanına bağlanmamız gerekiyor. Onunla çalışırken çeşitli PDO yöntemlerini kullanacağız. Nesne yöntemleri şöyle adlandırılır:

$ the_Object-> the_Method();

PDO, SQL kodunu yürütülmeden önce "hazırlamanıza" izin verir. SQL sorgusu çalıştırılmadan önce değerlendirilir ve "düzeltilir". Örneğin, en basit SQL enjeksiyon saldırısı, SQL'i bir form alanına basitçe enjekte ederek gerçekleştirilebilir. Örneğin:

Bu sözdizimsel olarak doğru SQL olduğundan, noktalı virgül DROP DATABASE user_table'ı yeni bir SQL sorgusu yapar ve kullanıcı tablosu bırakılır. Hazırlanan ifadeler (bağlı değişkenler), noktalı virgüllerin ve tırnakların orijinal sorguyu tamamlamasına izin vermez, bu nedenle DROP DATABASE komutu hiçbir zaman yürütülmez.

Hazırlanan ifadeleri kullanmak için, veritabanı nesnesinin hazırlama () yöntemini çağıran yeni bir değişken yazmanız gerekir.

Doğru kod:

getMesaj(); ) // Veritabanına eklemek istediğimiz kişi için değişkenleri ayarlayın $ first_Name = "Thom"; $ last_Name = "Şişe"; $ e-posta = " [e-posta korumalı]"; // Veritabanı nesnesinin hazırlama () yöntemini çağıran bir değişken oluşturun // Çalıştırmak istediğiniz SQL sorgusu parametre olarak girilir ve yer tutucular şu şekilde yazılır: placeholder_name $ my_Insert_Statement = $ my_Db_Connection-> hazırla ( " INSERT INTO Students ( name, lastname, email) VALUES (: first_name,: last_name,: email) "); // Şimdi bindParam() yöntemini kullanmak için her bir yer tutucuya hangi değişkenin başvurduğunu betiğine söylüyoruz // İlk parametre yukarıdaki ifadedeki yer tutucudur, ikincisi $ my_Insert_Statement-> bindParam (: first_name, $ first_Name); $ my_Insert_Statement-> bindParam (: last_name, $ last_Name); $ my_Insert_Statement-> bindParam (: email, $ email); // Az önce tanımladığımız verileri kullanarak sorguyu yürütün // Execute () yöntemi başarılı olursa TRUE, değilse FALSE döndürür ve ($ my_Insert_Statement-> execute () durumunda kendi mesajınızı yazdırma seçeneği sunar. )) (echo "Yeni kayıt rdoluşturuldu"; ) else (echo "Kayıt oluşturulamıyor";) // Bu noktada değişken verileri değiştirebilir ve veritabanı verilerine başka veriler eklemek için bir sorgu çalıştırabilirsiniz $ first_Name = "John"; $ last_Name = "Smith"; $ e-posta = " [e-posta korumalı]"; $ my_Insert_Statement-> execute (); // Değişken değiştirildiğinde tekrar çalıştır if ($ my_Insert_Statement-> execute()) (echo" Yeni kayıt başarıyla oluşturuldu ";) else (echo" Kayıt oluşturulamıyor ";

28, 29 ve 30. satırlarda veritabanı nesnesinin bindParam() yöntemini kullanıyoruz. Ayrıca bir öncekinden çok farklı olan bir bindValue() yöntemi vardır.

  • bindParam() - Bu yöntem, execute() yöntemine ulaşıldığında verileri değerlendirir. Komut dosyası yürütme () yöntemine ilk ulaştığında, $ first_Name öğesinin "Thom" ile eşleştiğini görür. Daha sonra bu değeri bağlar ve isteği çalıştırır. Komut dosyası ikinci yürütme () yöntemine ulaştığında, $ first_Name öğesinin artık "John" ile eşleştiğini görür. Daha sonra bu değeri bağlar ve sorguyu yeni değerlerle yeniden başlatır. Bir kere bir sorgu tanımladığımızı ve onu betiğin farklı noktalarında farklı verilerle yeniden kullandığımızı hatırlamak önemlidir.
  • bindValue () - Bu yöntem, bindValue () değerine ulaşılır ulaşılmaz verileri değerlendirir. $ first_Name "Thom" olarak ayarlandığından, bindValue () öğesine ulaşıldığında, $ my_Insert_Statement öğesinde execute() her çağrıldığında kullanılacaktır.
    $ first_Name değişkenini yeniden kullandığımızı ve ona ikinci kez yeni bir değer atadığımızı unutmayın. Komut dosyasını çalıştırdıktan sonra, komut dosyasının sonundaki $ first_Name değişkeninin "John" değerine sahip olmasına rağmen, her iki ad da veritabanında belirtilecektir. PHP'nin çalıştırmadan önce tüm betiği kontrol ettiğini unutmayın.

Komut dosyasını bindParam'ı bindValue ile değiştirecek şekilde güncellerseniz, veritabanına iki kez "Thom Vial" eklersiniz ve John Smith yoksayılır.

Adım 3 - Başarının Teyidi ve Problem Çözme

Veritabanına satır ekleme isteği başarılı olursa, aşağıdaki mesajı göreceğiz:

Yaygın hataları ortadan kaldırmak

MySQLi

Aksi takdirde, bir hata mesajı görüntülenecektir. Örneğin, kodda bir sözdizimi hatası yapalım ve aşağıdakileri elde ederiz:

Kodun ilk kısmı tamam, bağlantı başarıyla kuruldu, ancak SQL sorgusu başarısız oldu.

"Hata: INSERT INTO Öğrenciler (ad, soyad, e-posta) DEĞERLER (" Thom "," Flakon "," [e-posta korumalı]") SQL sözdiziminizde bir hata var; yakın" (ad, soyadı, e-posta) VALUES ("Thom", "Vial", " [e-posta korumalı]")" 1. satırda "

Komut dosyasının başarısız olmasına neden olan bir sözdizimi hatası yapıldı. Hata buradaydı:

$ sql = "Öğrencilere GİRİN (adı, soyadı, e-postası) DEĞERLER (" Thom "," Flakon "," [e-posta korumalı]")";

Normal parantezler yerine kaşlı ayraçlar kullandık. Bu yanlıştır ve komut dosyası bir sözdizimi hatası oluşturdu.

PDO

PDO bağlantısının 7. satırında, hata modu "tüm istisnaları görüntüle" olarak ayarlanmıştır. Farklı bir değer verilmişse ve istek başarısız olsaydı, herhangi bir hata mesajı almazdık.

Bu ayar yalnızca bir komut dosyası geliştirirken kullanılmalıdır. Etkinleştirildiğinde, güvenlik nedeniyle daha iyi gizlenen veritabanı ve tablo adları görüntülenebilir. Yukarıda açıklanan durumda, normal parantezler yerine küme parantezleri kullanıldığında, hata mesajı şöyle görünür:

Önemli hata: "SQLSTATE: Sözdizimi hatası veya erişim ihlali: 1064" mesajıyla birlikte yakalanmayan istisna "PDOException" SQL sözdiziminizde bir hata var; "(ad, soyadı, e-posta) VALUES (" Thom "," Vial "," yakınında kullanılacak haklar sözdizimi için MySQL sunucu sürümünüze karşılık gelen kılavuzu kontrol edin [e-posta korumalı]")" 1. satırda "

Diğer olası sorunlar:

  • Sütunlar yanlış (adlarında var olmayan sütunlar veya yazım hatası).
  • Farklı türdeki bir sütuna bir tür değer atanır. Örneğin, 47 sayısını Name sütununa girmeye çalışırsanız, bir hata alırsınız. Bu sütunda bir dize değeri kullanmalısınız. Ancak bir sayıyı tırnak içinde belirtmiş olsaydık (örneğin, "47") işe yarardı, çünkü bu bir dizedir.
  • Var olmayan bir tabloya veri girilmeye çalışıldı. Tablo adında bir yazım hatasının yanı sıra.

Verileri başarıyla girdikten sonra veritabanına eklendiğini göreceğiz. Aşağıda, verilerin eklendiği bir tablo örneği verilmiştir.

Çözüm

Bu makalede, MySQLi ve PDO kullanarak bir MySQL veritabanına veri eklemek için PHP'nin nasıl kullanılacağını ele aldık. Ve ayrıca yaygın hataların nasıl düzeltileceği. Bu bilgi, programlamayı öğrenirken ve kendi web sitenizi geliştirirken faydalı olacaktır.

Bu yayın makalenin bir çevirisidir " MySQL Veritabanına Veri Eklemek İçin PHP Nasıl Kullanılır"Güleryüzlü proje ekibi tarafından hazırlanmıştır.

Bu eğitimde, doğrudan PHP betiklerinizden veri tabanına nasıl veri ekleyeceğinize bakacağız.

SQL kullanarak veri ekleme

SQL'i veritabanları ve tablolar oluşturmak için kullandığınız şekilde veritabanına veri eklemek için kullanırsınız. SQL sorgusunun sözdizimi aşağıdaki gibidir:

EKLE TabloAdı (sütun1, sütun 2, ...) DEĞERLER (değer1, değer 2, ...)

Gördüğünüz gibi, tek bir SQL deyiminde birden çok sütunu virgülle ayrılmış bir listede belirterek güncelleyebilirsiniz. Ancak elbette yalnızca bir sütun ve bir değer de belirtebilirsiniz. Bu SQL deyiminde belirtilmeyen sütunlar boş kalacaktır.

Örnek: Bir masaya yeni bir kişi ekleme

Bu örnekte, Ders 18'deki veritabanını kullanıyoruz. Diyelim ki veritabanına bir kişi eklemek istiyoruz. Olabilir Gus kaz telefon numarası ile 99887766 ve doğum tarihi 1964-04-20 .

SQL ifadesi şöyle görünebilir:

$ strSQL = "Kişilere GİRİN (Ad, Soyad, Telefon, Doğum Tarihi) DEĞERLER (" Gus "," Kaz "," 99887766 "," 1964-04-20 ")";

Gördüğünüz gibi SQL deyimleri oldukça uzun olabilir ve kolayca kaybolabilirsiniz. Bu nedenle, SQL deyimini biraz farklı yazmak daha iyidir:

strSQL = "İNSANLARA GİRİN ("; strSQL = strSQL. "İlk adı,"; strSQL = strSQL. "Soy isim," strSQL = strSQL. "Telefon,"; strSQL = strSQL. "doğum)"; strSQL = strSQL. "DEĞERLER ("; strSQL = strSQL. "" Gus ","; strSQL = strSQL. "" Kaz ","; strSQL = strSQL. "" 99887766 ","; strSQL = strSQL. "" 1964-04-20 ")"; mysql_query ($ strSQL) veya die (mysql_error());

Burada SQL ifadesi, ifadeyi küçük parçalara bölerek ve ardından bunları bir değişkende birleştirerek oluşturulmuştur. $ strSQL.

Pratikte, bir yöntemin uygulanmasında veya diğerinde hiçbir fark yoktur, ancak büyük tablolarla çalışırken "izleme" yapabilmek son derece önemli hale gelir, bu nedenle en uygun yöntemi seçin.

Gus Goose'u veritabanına eklemek için aşağıdaki kodu deneyelim:

Veritabanına veri ekleme // Veritabanı sunucusuna bağlanın mysql_connect ("mysql.myhost.com", "user", "susam") veya die (mysql_error ());// Veritabanı seçimi mysql_select_db ("veritabanım") veya die (mysql_error ()); // SQL deyimini oluşturun $ strSQL = "İNSANLARA EKLE ("; $strSQL = $strSQL. "İlk adı,"; $strSQL = $strSQL. "Soy isim,"; $ strSQL = $ strSQL. "Telefon,"; $ strSQL = $ strSQL. "Doğum günü)"; $ strSQL = $ strSQL. "DEĞERLER ("; $strSQL = $strSQL. "" Gus ","; $ strSQL = $ strSQL. "" Kaz ","; $strSQL = $strSQL. "" 99887766 ","; $ strSQL = $ strSQL. "" 1964-04-20 ")"; // SQL deyimi yürütülür mysql_query ($ strSQL) veya die (mysql_error()); // Bağlantıyı kapat mysql_close(); ?>

Veritabanı güncellendi!

Kullanıcı girdisini veritabanına kaydetme

Muhtemelen Ders 11'de olduğu gibi bunun için bir form oluşturabileceğinizi fark etmişsinizdir ve formdaki değerler bir SQL deyimine eklenebilir. Diyelim ki basit bir formunuz var:

Bu form bir dosyaya gönderilir insert.php burada, Ders 11'de gösterildiği gibi, formun içeriğini talep ederek kullanıcı girdisi alabilirsiniz. Bu özel durumda, SQL ifadesi şöyle olabilir:

strSQL = "INSERT INTO kişi (FirstName) değerleri (" ". $ _POST [" FirstName "]." ")"

Benzer şekilde, tanımlama bilgileri, oturumlar, sorgu dizeleri vb. için veri talep edebilirsiniz.

En yaygın başlangıç ​​hataları

İlk başta, veritabanını güncellemeye çalışırken muhtemelen bir sürü hata mesajı alacaksınız. Bir veritabanıyla çalışırken hiçbir hataya tamamen izin verilmez. Yanlış yerleştirilmiş bir virgül, veritabanının güncellenmediği anlamına gelebilir ve bir hata mesajı alırsınız. Aşağıda en yaygın hataları açıklıyoruz.

Geçersiz veri türü

Sütunun veri ve veri türünün eşleşmesi önemlidir. Her sütun belirli bir türde veri içerebilir. Aşağıdaki ekran görüntüsü, örneğimizdeki "kişiler" tablosunun veri türlerini göstermektedir.

Örneğin, bir veri alanına metin veya sayı eklemeye çalışırsanız bir hata verilir. Bu nedenle, veri türünü mümkün olduğunca kesin olarak ayarlayın.

En yaygın veri türleri aşağıda listelenmiştir:

Anlam Veri tipi Boyut
CHR
Metin veya metin ve sayıların birleşimi. Hesaplarda kullanılmayan sayılar için de kullanılabilir (örn. telefon numaraları). 255 karaktere kadar - "Uzunluk" bölümünde belirtilen uzunluk
METİN
Büyük metin blokları veya metin ve sayıların birleşimi. 65.535 karaktere kadar
INT
Matematiksel hesaplamalar için sayısal veriler. 4 bayt
TARİH
YYY-AA-GG formatındaki tarihler 3 bayt
ZAMAN
ss: mm: ss biçimindeki süre 3 bayt
DATETIME
YYY-AA-GG formatında tarih ve saat ss:dd:ss 8 bayt

Tırnak veya ters eğik çizgi içeren SQL ifadeleri

Tek tırnak ("), çift tırnak (") veya ters eğik çizgi (\) karakterleri içeren metin eklemeye çalışırsanız, kayıt veritabanına eklenmez. Çözüm, veritabanı sorgularına eklendiğinde anımsanması gereken karakterlerin önüne ters eğik çizgi koymaktır.

Son güncelleme: 1.11.2015

"INSERT" ifadesi veri eklemek için kullanılır:

$ sorgu = "DEĞERLERE GİRİN (NULL," Samsung Galaxy III "," Samsumg ")";

INSERT ifadesi tabloya bir satır ekler. INTO anahtar sözcüğünü tablo adı takip eder ve DEĞERLER'den sonra tüm sütunlar için değer kümesi parantez içinde belirtilir. Tabloda üç sütunumuz olduğu için üç değer belirtiyoruz.

Önceki konuda, tabloyu oluştururken aşağıdaki sütun sırasını belirledik: id, ad, şirket, bu durumda id sütunu için NULL değeri iletilir - "Samsung Galaxy III" ve şirket - "Samsum".

id sütunu AUTO_INCREMENT olarak tanımlandığından, bunun için belirli bir sayısal değer belirtmemize gerek yoktur ve bir NULL değeri iletebiliriz ve MySQL bir sonraki kullanılabilir değeri sütuna atayacaktır.

Şimdi bir örnekle veri eklemeye bakalım. Bir dosya oluşturalım oluştur.php aşağıdaki içerikle:

Veri eklendi";) // mysqli_close ($ link);)?>

Yeni model ekle

Modeli girin:

Üretici firma:

Burada, veritabanıyla etkileşime girme kodu, formların işlevselliği ile birleştirilir: formu kullanarak, veritabanına eklenecek verileri giriyoruz.

Güvenlik ve MySQL

Burada mysqli_real_escape_string() fonksiyonunu kullandık. Daha sonra bir SQL sorgusunda kullanılan bir dizedeki karakterlerden kaçmak için kullanılır. Parametre olarak kaçılacak bir bağlantı nesnesi ve bir dize alır.

Bu nedenle, aslında iki kez kaçan karakter kullanırız: önce mysqli_real_escape_string() işlevini kullanan sql ifadesi için ve sonra htmlentities() işlevini kullanan html için. Bu, kendimizi aynı anda iki tür saldırıdan korumamızı sağlayacaktır: XSS saldırıları ve SQL enjeksiyonu.

Yazardan: eh, bir şarkıdan kelimeleri silemezsin! Ancak bunlar silinebilir, güncellenebilir veya başkaları eklenebilir. Ana şey, kelimelerin veritabanına girilmesidir. Bugün size MySQL'de verilerin nasıl kaydedildiğini ve şarkıyı seslendirmek için nasıl doğru bir şekilde yapılacağını anlatacağız!

phpMyAdmin ile kayıt ekleme

MySQL DBMS'yi yönetmek için phpMyAdmin kabuğu, veritabanı tablolarına yeni kayıtlar eklemek için "hafif" bir işlevselliğe sahiptir. Sadeliği nedeniyle hem çevreci aptallar hem de tembel profesyoneller için idealdir.

Tabloya yeni bilgiler girmek için yönetici hakları altında programa girmelisiniz. Ardından, soldaki listelerden gerekli tabanı ve tabloyu seçin. Ardından üst menüdeki "Ekle" öğesini gözden geçirin.

Daha sonra MySQL veritabanına kayıt yapmak için sonraki pencerede "Value" alanının tüm sütunlarını doldurun ve alttaki "OK" butonuna tıklayın.

Yukarıdaki ekran görüntüsü, değiştirilmiş "Hayvanlar" tablosunun iki sütundan (alanlardan) oluştuğunu gösterir: id ve name. İkinci bölüm, sütunların her birinin türünü listeler. Kimlik sütunu birincil anahtar olduğundan ve tablo oluşturulduğunda otomatik olarak artırıldığından, yalnızca ad alanı için bir değer girmemiz gerekir. Bu, id alanının değerinin, önceki tamsayı değerine 1 eklenerek MySQL tarafından otomatik olarak oluşturulacağı anlamına gelir.

MySQL'de hangi veri kaydı alanının birincil anahtar olduğunu bulmak için, phpMyAdmin'de menüye (listede soldaki tablo seçiliyken) üst menünün "Yapı" sekmesine gidin. İşte tablodaki tüm alanların açıklaması, türleri ve ek özellikleri.

SQL Sorgularını Kullanarak Veri Ekleme

Ancak phpMyAdmin yalnızca bir kabuktur ve gerçek yöneticiler, yapılandırılmış sorgu dilini kullanarak MySQL sunucusuyla "konuşur". Yani, onunla SQL'de "konuşuyorlar". Gerçek profesyoneller olmaya çalıştığımız için, bu konu çerçevesinde SQL komutlarının çalışmasına biraz "dalacağız". İşte "SQL" alanına aynı veritabanını oluşturacağınızı girerek bir sorgu:

CREATE TABLE Animal (id MEDIUMINT NOT NULL AUTO_INCREMENT, isim CHAR (30) NOT NULL, PRIMARY KEY (id));

CREATE TABLE Animal (id MEDIUMINT NOT NULL AUTO_INCREMENT,

isim CHAR (30) NULL DEĞİL, BİRİNCİL ANAHTAR (id));

Tabloyu oluşturup verileri MySQL veritabanına yazdıktan sonra ("Ekle" sekmesi aracılığıyla) program hayvanlara 1 tanımlayıcı değerine sahip bir satır eklendiğini size bildirecektir. ...

İstek kodu:

INSERT INTO `my_db1`.`animal` (` id`, `name`) DEĞERLER (NULL," Cat ");

'my_db1' İÇİNE EKLE. "hayvan" ("kimlik", "ad") DEĞERLER (NULL, "Kedi");

Daha yakından bakalım. SQL'de INSERT ifadesi, bir tabloya yeni bir satır eklemek için kullanılır. Sunucuya belirtilen değerleri id ve name alanlarına eklemesini söyler (VALUES (NULL, ‘Cat’).

Lütfen, id sütunu için sayısal bir değer belirtmediğimizi, ancak bu alan için otomatik tamamlamayı (otomatik artırma) "etkinleştirdiğimiz" için NULL değerini belirttiğimizi unutmayın.

PHP kullanarak bir kayıt nasıl eklenir

Düşündüğümüz her şey, "Majesteleri" sunucu tarafı programlama dili PHP'nin sahneye girdiği ana eyleme sadece bir "başlangıç". Bir DBMS olarak MySQL'in Web'de bu kadar yaygınlaşması onun sayesinde.
World Wide Web'in büyük bir kısmı bu iki İnternet teknolojisi arasındaki bağlantı üzerine kurulmuştur. Nereye bakarsanız bakın, onları her yerde bulacaksınız: modern CMS'de, "kendi kendine yazılan" motorlarda ve sunucuda.

PHP'nin MySQL'e veri yazmak için pek çok yerleşik işlev sağlaması şaşırtıcı değildir. Ama biz bunlardan en önemlilerine odaklanacağız. İşte hayvanlar tablosuna yeni bir "hayvan" ekleyen kod. Çok denerseniz, bu şekilde bütün bir hayvanat bahçesi toplayabilirsiniz :)

$ con_str = mysql_connect ("localhost", "root", "", "db1"); if (mysql_connect ("localhost", "root")) (echo "Merhaba !!";) mysql_select_db ("db1", $ con_str); $ query_str = "INSERT INTO` db1`.`hayvan` (`kimlik`,` isim`) DEĞERLER (NULL, "köpek") "; mysql_query ($ sorgu_str); mysql_close();

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

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

yankı "Merhaba !!" ;

mysql_select_db ("db1", $ con_str);

$ sorgu_str = "INSERT INTO` db1`.`animal` (`id`,` name`) DEĞERLER (NULL, "dog") ";

mysql_query ($ sorgu_str);

mysql_close();

Bu kodun bir PHP dosyasına yapıştırılması ve sunucu tarafına yerleştirilmesi gerekir.

MySQL veritabanı sunucusuna bağlanmak için mysql_connect() fonksiyonunu kullanıyoruz. İşlev, ana bilgisayar, DBMS kullanıcı adı, parola ve bağlanılacak veritabanının adını bağımsız değişken olarak kabul eder. Yerel (istemci) makinede kurulu bir sunucu kullandığımız için boş bir parolamız var.

PHP kullanarak MySQL veritabanına yazmanın açıklanan tüm örneklerini göstermek için Denver'dan "centilmen's kit" kullandık. Yerel bir Apache sunucusu, bir MySQL sunucusu, phpMyAdmin ve kod oluşturmak ve test etmek için birkaç faydalı araç daha içerir.

Ardından mantıksal if bloğunda, veritabanı sunucusuyla bağlantı olup olmadığını kontrol ettik. Daha sonra mysql_select_db() fonksiyonunda bağlanacağımız base'i belirledik. mysql_query() fonksiyonunu kullanarak $ query_str değişkeninde yazılan SQL sorgusunu çalıştırılması için başlattık. Ve sonunda kurulan bağlantı kapatıldı (mysql_close() işlevi). Şimdi, eğer menagerie'mize (sofra hayvanı) bakarsak, orada yeni bir "evcil hayvan" bulacağız.

MySQL'e yazmak için PHP "lütfen" gerekli tüm fonksiyonları sağladı. Program kodunda SQL kullanırken yeni başlayanların "yandığı" ana şey, sorguların yanlış yazılması, sözdiziminin ihlali ve kaçmak için karakterlerin değiştirilmesidir (tırnak işaretleri).

Kafanızda fazladan "gri" saç oluşmasını önlemek için, isteğin doğruluğunu phpMyAdmin'i kullanarak kontrol etmek daha iyidir. Bunu yapmak için SQL kodunu program düzenleyiciye yerleştirin ve yürütmek için çalıştırın. Bir şey yanlışsa, uygulama “küfür etmeye” başlayacak, kırmızı bir mesaj gösterecek ve hatanın yerini gösterecektir.

Gördüğünüz gibi, MySQL'in yardımıyla menagerie'nizi "bir araya getirebilir" ve herhangi bir "şarkı"nın sözlerini doğru şekilde değiştirebilirsiniz. PHP, MySQL veritabanına yazmak için idealdir, bu yüzden bu "harika" programlama dili ile "yakın" bir arkadaşlık kurmanızı tavsiye ederiz!