Menü
Bedava
kayıt
ev  /  Gezginler/ php ile mysql'e ekleme. PHP kodunu kullanarak MySQL veritabanına nasıl yazılır

php ile mysql'e ekleme. PHP kodunu kullanarak MySQL veritabanına nasıl yazılır

Yorumlar blogdan taşındı

SERGEY
09/14/2016 01:25
İyi günler!
Şu soruyla ilgileniyorum: Bir veritabanı kullanmadan verilerin ve program ayarlarının depolanmasını düzenlemenin en kolay yolu nedir? MySQL veya Access'e bağlı kalmak istemiyorum ..

YÖNETİCİ
09/14/2016 22:14
Merhaba!

Özellikler.Ayarlar
Uygulama Yapılandırması
XML dosyası
serileştirme
Listeden bir şey seçmeye çalışın.

NIKOLAİ
09/16/2016 02:28
Merhaba, dataGridView'da vurgulanan satırı dataGridView ve phpMyAdmin'den nasıl kaldırabilirim.

PhpMyAdmin? Bu sadece veritabanıyla çalışmak için bir kabuk, açıklayabilir misiniz?

NIKOLAİ
09/18/2016 02:24
seçilen satırın DataGridView'dan ve veritabanından silinmesi gerekir.

YÖNETİCİ
09/19/2016 07:00
Mysql veritabanında bir satır nasıl silinir - makale eklendi.

NIKOLAİ
09/20/2016 09:20
Çok teşekkürler.

DIMA
09/20/2016 saat 10:24
merhaba, yapabilir misin Bu taraftan DataGridView aracılığıyla değil, ComboBox aracılığıyla uygulansın mı? Öyleyse nasıl? Teşekkürler.

YÖNETİCİ
22.09.2016 03:21
Selam. Örnek:

GENNADY
22.09.2016 18:25
System.Windows.Forms.TextBox, Text veritabanına neden aşağıdaki metni giriyorum: ge

Bu arada bu genin sonunda bu (ge) yazıyor, tablo ayarlarında metin belirtilmiş olmasına rağmen.Gen kelimesi daha uygun olmalıydı, bu tabloyu programıma getiriyorum ve ortaya çıkıyor bana tüm bu gereksiz metni gösteriyor

YÖNETİCİ
09.24.2016 04:17
Büyük olasılıkla, SQL sorgusu yanlış yazılmıştır, örneğin:

textBox1'e adı girin: Gena.

Sql sorgusu: "Tablo adı değerlerini (textBox1, ..) içine yerleştirin"; Sonuç: System.Windows.Forms.TextBox

Ve şunu geçmeniz gerekiyor: "Tabloya isim değerleri ekleyin (textBox1.Text, ..)";
Sonuç: Gen

GENNADY
09.24.2016 18:41
Bu böyle. teşekkürler

SERGEY
25.09.2016 11:51
Merhaba. Ve textBox aracılığıyla veritabanına ekleme nasıl yapılır?

YÖNETİCİ
26.09.2016 20:53
Prensipte her şey aynı. Örneğin, ihtiyacınız olan en son örneği alalım:

// parametreler oluşturun ve bunları cmd.Parameters.AddWithValue ("@ Name", textBox1.Text); cmd.Parameters.AddWithValue ("@ LastName", textBox2.Text);

şimdi parametreler: Name ve LastName metin kutularına girilen değerleri alır ve veritabanına aktarır

LINARA
27.09.2016 17:45
Merhaba, dataGridView ve phpMyAdmin'de vurgulanan satır nasıl?

YÖNETİCİ
29/09/2016 02:06
Vurgulanan satırın phpMyAdmin'de nasıl yapılabileceğini bilmiyorum. Ve örneğin dataGridView'da bu, SelectionChanged olayı kullanılarak yapılabilir.

PSH
09/30/2016 03:48
2 Linara:
Dizeleri bu şekilde düzenlemek istiyorsanız, bir HediSQL aracı alın, dizeleri düzeltin ve değiştirin.

2admin
İyi günler! Malzemeler için teşekkürler - her şey çok güzel bir şekilde ifade edildi)
Soru: Bu sorguyla veri ekliyorum (bu bir test):

String sql = "INSERT INTO kullanıcıları (` FIO`, `Tur`,` Sayı`, `Maliyet`,` Tarih`, `Pasaport`,` Doğum`) DEĞERLER ("Kolyan", "Moskova", "1 + 1 ", 1100," 2011-11-11 "," 1111 1111 "," 11/9/1900 ");";

Veri girildi her şey yolunda, ancak veritabanında (mysql) Kiril alfabesi yerine "????" var.

Visual studio, System.String'in bir Unicode dizisi olduğunu söylüyor.

Ayrıca denendi:

ALTER DATABASE `test` COLLATE" koi8r_general_ci "; ALTER TABLE `users` COLLATE =" koi8r_general_ci "; ALTER DATABASE `test` COLLATE" utf8_unicode_ci "; ALTER TABLE `users` COLLATE =" utf8_unicode_ci ";

Ama yardımcı olmuyor..
Ne yanlış olabilir? VS ve DB için farklı kodlama? Ya da ne?
Ne okunacağını / değiştirileceğini gönderebilir.
Teşekkürler

YÖNETİCİ
01.10.2016 09:49
Selam.

Veritabanında (ve tabloda) harmanlama utf_general_ci şeklindedir.

Böyle bir karşılaştırma var mı? Belki utf8_general_ci?

Genellikle, utf8_general_ci karşılaştırması seçilerek bir Mysql veritabanı oluşturulur, bu nedenle Kiril alfabesi ile ilgili herhangi bir sorun yoktur, tabii ki istemciden sunucuya krakozyabralar gelmedikçe.

COLLATION karşılaştırma için kullanılır, ancak bu durumda karakter seti önemlidir. Bu nedenle, önce sunucuda, örneğin utf8'de ve latin1'de doğru şekilde ayarlandığından emin olmanız gerekir.

.net aracılığıyla bağlanırken, (varsayılan) bağlayıcı latin1'i kullanır, bu nedenle bazen bağlantı dizesinde utf8 kodlamasını açıkça belirtmeniz gerekir:

MySqlConnection mycon; mycon = new MySqlConnection ("sunucu = 127.0.0.1; uid = vasya; pwd = 123; veritabanı = test; Karakter kümesi = utf8;"); // MySqlConnectionStringBuilder: mysqlCSB.CharacterSet = "utf8";

PSH
01.10.2016 11:34
Haklısın, tarif, utf8_general_ci!
Evet yardımcı oldu,;Karakter seti = utf8;
Çok teşekkürler!

SERGİSİ
02.10.2016 11:02
Gerekli çalışma örneği için teşekkürler. Soru
Veritabanının IP adresini girmek istediğim bir metin alanı oluşturdum ancak bu verileri burada nasıl değiştireceğimi bilmiyorum

String conStr = " [e-posta korumalı]; kullanıcı = test; "+
"veritabanı = test; şifre = test;";
Lütfen bana bu yapıya metin alanlarından Windows formuna nasıl veri ekleyeceğimi söyleyin….

YÖNETİCİ
10/03/2016 11:50
"[e-posta korumalı]; kullanıcı = ...
Genel olarak, bu makaledeki gibi özellikleri veya böyle bir dize yerine String.Format() yöntemini kullanmak daha iyidir.

OLGA2203
05/15/2017 20:14

String Connect = “Sunucu = 127.0.0.1; Bağlantı Noktası = 3306; Veritabanı = temel; Veri Kaynağı = localhost; kullanıcı = kök;”; MySqlConnection con = yeni MySqlConnection (Bağlan); con.Aç (); // Veritabanına bağlantı kuruyoruz. MySqlCommand cmd = yeni MySqlCommand (); cmd.CommandText = @ ”tovar'a EKLE (ID, Kategori, Ad, Ticari Marka, Fiyat, Fotoğraf, Boyut, Renk, Malzeme, Sayı) DEĞERLER (@pr, @Category, @Name, @TicariMark, @Fiyat, @Foto, @Boyut, @Renk, @Malzeme, @Sayı) ”; cmd.Parameters.AddWithValue (“@ pr”, sayaç); cmd.Parameters.AddWithValue (“@ Kategori”, comboBox1.SelectedItem.ToString ()); cmd.Parameters.AddWithValue (“@ Ad”, textBox1.Text); cmd.Parameters.AddWithValue (“@ Ticari Marka”, textBox2.Text); cmd.Parameters.AddWithValue (“@ Fiyat”, Convert.ToInt32 (textBox4.Text)); cmd.Parameters.AddWithValue (“@ Fotoğraf”, textBox3.Text); cmd.Parameters.AddWithValue (“@ Boyut”, textBox6.Text); cmd.Parameters.AddWithValue (“@ Renk”, textBox5.Text); cmd.Parameters.AddWithValue (“@ Malzeme”, textBox8.Text); cmd.Parameters.AddWithValue (“@ Count”, Convert.ToInt32 (textBox7.Text)); cmd.Bağlantı = con; cmd.ExecuteNonQuery(); MessageBox.Show (“Ekleme başarılı”, “Ekleme başarılı”, MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

"Sütun" Kimlik "boş olamaz" hatası çıkıyor, kimlik sütununa eklemeyi kaldırıyorum - bir sonraki sütun için aynısını yazıyorum vb.
DEĞERLER içinde parantez içinde herhangi bir sabit değer girersem satır tabana eklenir.
Lütfen bana sorunun ne olduğunu söyler misiniz? Form üzerinden girdiğim verileri ve değerleri tam olarak veritabanına yazmam gerekiyor

Son güncelleme: 1.11.2015

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

$ sorgu = "INSERT INTO için DEĞERLER (NULL," Samsung Galaksi III "," Samsun ")";

INSERT ifadesi tabloya bir satır ekler. Sonrasında anahtar kelime INTO, tablonun adıdır 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, ad - "Samsung Galaxy III" ve için şirket - "Samsumg".

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ı ile 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 kullanılan bir dizgedeki karakterlerden kaçmak için kullanılır. SQL sorgusu... Parametre olarak kaçılacak bir bağlantı nesnesi ve bir dize alır.

Bu nedenle, aslında iki kez karakter çıkışı uyguları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.

Bu yazıda, belki de en önemlilerinden bazılarını analiz edeceğiz. SQL sorguları... o bir veritabanı tablosundan kayıt eklemek ve kaldırmak için sorgular... ÇOK sık gerekli olduğu için tabloya yeni kayıtlar ekle, ve içinde yap otomatik mod, o zaman bu materyal çalışma için gereklidir.

Başlamak SQL ekleme sorgusu Yeni giriş masaya:

INSERT INTO kullanıcı (giriş, geçiş) değerleri ("TestUser", "123456")

Bir giriş eklerken, ilk komut " TAKIN", ardından kaydı eklediğimiz tablonun adı. Ardından parantez içinde doldurmak istediğimiz alanların adları gelir. Ardından kelimeden sonra parantez içinde" değerler"seçtiğimiz alanların değerlerini listelemeye başlıyoruz. Bu sorguyu yürüttükten sonra tablomuzda yeni bir kayıt görünecektir.

bazen alır tablodaki bir kaydı güncelleme, bunun için aşağıdakiler var SQL sorgusu:

GÜNCELLEME kullanıcıları SET login = "TestUser2", pass = "1234560" WHERE login = "TestUser"

Bu sorgu, yapıya sahip olduğu için daha karmaşıktır " NEREDE", ancak bununla ilgili daha fazlası aşağıda. İlk önce komut gelir" GÜNCELLEME"ardından tablo adı, ardından" AYARLAMAK"değiştirmek istediğimiz tüm alanların değerlerini açıklıyoruz. Basit olurdu ama şu soru ortaya çıkıyor:" Hangi kaydı güncellemelisiniz?". Bunun için var" NEREDE". Bu durumda, kaydı, alanı güncelliyoruz" giriş yapmak"hangisi önemli" TestKullanıcısı". Lütfen, bu tür birkaç kayıt varsa, o zaman kesinlikle her şey güncellenecek! Bunu anlamak çok önemlidir, aksi takdirde masanızı kaybetme riskiyle karşı karşıya kalırsınız.

Biraz daha konuşalım" NEREDE". Eşitlik için basit testlere ek olarak, mantıksal işlemlerin yanı sıra eşitsizlikler de vardır: VE ve VEYA.

GÜNCELLEME kullanıcıları SET login = "TestUser2", pass = "1234560" WHERE id< 15 AND login="TestUser"

NS SQL sorgusu bu kayıtları güncelleyecek İD hangileri daha az 15 VE alan " giriş yapmak"anlamı var" TestKullanıcısı". Umarım tasarımı anlamışsınızdır." NEREDE"çünkü çok önemli. Aynen öyle." NEREDE"ne zaman kullanılır tablolardan kayıt alma, ve bu, veritabanlarıyla çalışırken en sık kullanılan görevdir.

Ve son olarak, basit bir tane Bir tablodan kayıtları silmek için SQL sorgusu:

Kullanıcılardan DELETE WHERE login = "TestUser2"

komutundan sonra " SİL"Kayıtları silmek istediğiniz tablonun adıdır. Daha sonra " WHERE " yapısını açıklıyoruz. Kayıt açıklanan koşullara uyuyorsa silinecektir. NEREDE", herhangi bir sayıda silinebilir.


Ders esas alınacak biçim geri bildirim 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 kullanarak bir tablo oluşturabilirsiniz. standart araçlar 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" - adresler burada saklanacak elektronik kutular kullanıcılar;
"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'da 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'da varsayılan olarak şifre yoktur, bu parametre boş bırakılabilir)
$ dbName = "test_base"; // veri tabanı ismi

/ * Verileri saklayan 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'da varsayılan olarak şifre yoktur, bu parametre boş bırakılabilir)
$ dbName = "test_base"; // veri tabanı ismi

/ * Verileri saklayan 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. o basit prosedür bu, barındırma kontrol panelinizde phpMyAdmin ile yapılabilir.

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 göreceğiz yeni sayfa, gerekli tüm tablo parametrelerini ayarladığımız:

Bu en çok kolay kurulum hangi tablo ve almak için kullanılabilir ek bilgi tabloların / veritabanlarının yapısı hakkında.

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. V program kodu 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 ise $ 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 rdcreatedbaşarıyla"; ) 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 isim de 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 alıyoruz:

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ı oluştu. 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 tırnak içinde bir sayı belirtmiş olsaydık (örneğin, "47"), bu bir dize olduğu için işe yarayabilirdi.
  • 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.