Menü
Bedava
giriş
ana  /  Navigatörler / Php aracılığıyla mysql'e ekleyin. PHP kodunu kullanarak MySQL veritabanına nasıl yazılır

Php aracılığıyla mysql'e ekleniyor. PHP kodunu kullanarak MySQL veritabanına nasıl yazılır

Blogdan taşınan yorumlar

SERGEY
01:25 tarihinde 09/14/2016
Tünaydın!
Şu soruyla ilgileniyorum: Bir veritabanı kullanmadan veri depolamayı ve program ayarlarını düzenlemenin en kolay yolu nedir? MySQL veya Access'e bağlı olmak istemiyorum ..

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

Özellikler Ayarlar
App.Config
XML dosyası
serileştirme
Listeden bir şey seçmeye çalışın.

NIKOLAI
02:28 tarihinde 09/16/2016
Merhaba, dataGridVIew'deki seçili satırı dataGridVIew ve phpMyAdmin'den nasıl kaldırırım.

PhpMyAdmin? Bu sadece veritabanıyla çalışmak için bir kabuk, açıklar mısınız?

NIKOLAI
09/18/2016, 02:24
Seçilen satırın DataGridView ve veritabanından kaldırılması gerekir.

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

NIKOLAI
09:20 tarihinde 09/20/2016
Çok teşekkür ederim.

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

YÖNETİCİ
03:21 tarihinde 09/22/2016
Merhaba. Misal:

GENNADY
18:25 tarihinde 09/22/2016
System.Windows.Forms.TextBox, Text: ge veritabanına neden aşağıdaki metni giriyorum

Bu arada, bu genin sonunda bu (ge) yazılmıştır, metin tablo ayarlarında belirtilmiş olmasına rağmen, genin kelimesi daha da sığmalıydı, bu tabloyu programıma getirdim ve çı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 şu adı girin: Gena.

Sql sorgusu: "Tablo adı değerlerine ekle (textBox1, ..)"; Sonuç: System.Windows.Forms.TextBox

Ve şunu iletmeniz gerekir: "Tablo adı değerlerine ekle (textBox1.Text, ..)";
Sonuç: Gen

GENNADY
09.24.2016 18:41
İşte böyle. Teşekkür

SERGEY
09/25/2016, 11:51
Merhaba. TextBox ile veritabanına ekleme nasıl yapılır?

YÖNETİCİ
20:53 tarihinde 09/26/2016
Prensipte her şey aynıdır. Örneğin, son örneğe bakalım, ihtiyacı var:

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

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

LINARA
17:45 tarihinde 09/27/2016
Merhaba, dataGridVIew ve phpMyAdmin'de vurgulanan satır nasıl?

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

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

2 yönetici
Güzel gün! Malzemeler için teşekkürler - her şey çok güzel bir şekilde belirtilmiştir)
Soru: Bu sorgu ile veri ekliyorum (bu bir test):

Dize sql \u003d "INSERT INTO users (` FIO`, `Tour`,` Count`, `Cost`,` Date`, `Passport`,` Doğum`) DEĞERLER ("Kolyan", "Moskova", "1 + 1 ", 1100," 2011-11-11 "," 1111 1111 "," 11/9/1900 ");";

Veriler girilir her şey tamamdır, ancak veritabanında (mysql) Kiril alfabesi yerine "????" vardır.

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

Ayrıca denedi:

ALTER VERİTABANI "test` COLLATE" koi8r_general_ci "; ALTER TABLE `users` COLLATE \u003d" koi8r_general_ci "; ALTER VERİTABANI "test` COLLATE" utf8_unicode_ci "; ALTER TABLE `users` COLLATE \u003d" utf8_unicode_ci ";

Ama yardımcı olmuyor ..
Ne yanlış olabilir? Farklı kodlama VS ve DB? Ya da ne?
Okunacak / değiştirilecek ne gönderilebilir.
teşekkür

YÖNETİCİ
01.10.2016 saat 09:49
Merhaba.

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

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

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

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

.Net üzerinden bağlanırken, (varsayılan) bağlayıcı latin1 kullanır, bu nedenle bazen bağlantı dizesinde utf8 kodlamasını açıkça belirtmeniz gerekir:

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

PSH
01.10.2016 saat 11:34
Haklısın, kendini tarif ettin utf8_general_ci!
Evet yardımcı oldu ,; Karakter kümesi \u003d utf8;
Çok teşekkürler!

SERGİ
02.10.2016 saat 11:02
Gereken ç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

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

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

OLGA2203
20:14 tarihinde 05/15/2017

String Connect \u003d "Sunucu \u003d 127.0.0.1; Bağlantı Noktası \u003d 3306; Veritabanı \u003d taban; Veri Kaynağı \u003d localhost; kullanıcı \u003d kök;"; MySqlConnection con \u003d new MySqlConnection (Bağlan); con.Open (); // Veritabanına bir bağlantı kurun. MySqlCommand cmd \u003d new MySqlCommand (); cmd.CommandText \u003d @ ”INSERT INTO tovar (ID, Category, Name, TradeMark, Price, Photo, Size, Color, Material, Count) VALUES (@pr, @Category, @Name, @TradeMark, @Price, @Photo, @Size, @Color, @Material, @Count) ”; cmd.Parameters.AddWithValue (“@ pr”, sayaç); cmd.Parameters.AddWithValue (“@ Category”, comboBox1.SelectedItem.ToString ()); cmd.Parameters.AddWithValue (“@ Name”, textBox1.Text); cmd.Parameters.AddWithValue (“@ TradeMark”, textBox2.Text); cmd.Parameters.AddWithValue (“@ Price”, Convert.ToInt32 (textBox4.Text)); cmd.Parameters.AddWithValue (“@ Fotoğraf”, textBox3.Text); cmd.Parameters.AddWithValue (“@ Size”, textBox6.Text); cmd.Parameters.AddWithValue (“@ Color”, textBox5.Text); cmd.Parameters.AddWithValue (“@ Material”, textBox8.Text); cmd.Parameters.AddWithValue (“@ Count”, Convert.ToInt32 (textBox7.Text)); cmd.Connection \u003d con; cmd.ExecuteNonQuery (); MessageBox.Show ("Ekleme başarılı", "Ekleme başarılı oldu", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

"Sütun" Kimlik "boş olamaz" hatası verildi, Kimlik sütununa yapılan eklemeyi kaldırıyorum - aynısını sonraki sütun için yazıyor vb.
DEĞERLER'de parantez içinde herhangi bir sabit değer girersem, satır tabana eklenir.
Lütfen bana sorunun ne olduğunu söyler misin? Veritabanına tam olarak form aracılığıyla girilen verileri ve değerleri yazmam gerekiyor

Son güncelleme: 1.11.2015

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

$ sorgu \u003d "INSERT INTO tovars VALUES (NULL," Samsung Galaksi III "," Samsumg ")";

INSERT ifadesi tabloya bir satır ekler. Sonra anahtar kelime INTO, tablonun adıdır ve VALUES'tan sonra, tüm sütunlar için değer kümesi parantez içinde gösterilir. Tabloda üç sütunumuz olduğundan, üç değer belirtiyoruz.

Önceki konu başlığından bu yana, tabloyu oluştururken aşağıdaki sütun sırasını belirttik: id, ad, şirket, bu durumda id sütunu için NULL değeri, ad için - "Samsung Galaxy III" ve şirket - "Samsumg".

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

Şimdi bir örnekle veri eklemeye bakalım. Bir dosya oluşturalım create.php aşağıdaki içeriğe sahip:

Veriler eklendi";) // bağlantıyı kapat mysqli_close ($ link);)?\u003e

Yeni model ekle

Modeli girin:

Üretici firma:

Burada veritabanı ile etkileşim kodu, formların işlevselliği ile birleştirilir: bir form kullanarak, veritabanına eklenecek verileri giriyoruz.

Güvenlik ve MySQL

Burada mysqli_real_escape_string () işlevini kullandık. Bir dizedeki karakterlerin kaçmasına hizmet eder ve bu daha sonra sQL sorgusu... Parametre olarak çıkış yapmak için bir bağlantı nesnesi ve bir dizge gerekir.

Bu nedenle, aslında iki kez kaçan karakter uyguluyoruz: önce mysqli_real_escape_string () işlevini kullanarak sql ifadesi için ve sonra htmlentities () işlevini kullanarak html için. Bu, kendimizi aynı anda iki tür saldırıdan korumamıza izin verecektir: 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ıklıkla gerekli olduğundan tabloya yeni kayıtlar ekleve içinde yap otomatik mod, o zaman bu materyal çalışma için gereklidir.

Başlamak SQL ekleme sorgusu yeni giriş masaya:

INSERT INTO users (login, pass) değerleri ("TestUser", "123456")

Giriş eklerken ilk komut " TAKIN", ardından kaydı eklediğimiz tablonun adı. Ardından parantez içinde doldurmak istediğimiz alanların adları geliyor. Ve 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üncellemebunun için aşağıdakiler var SQL sorgusu:

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

Bu sorgu daha karmaşıktır çünkü yapısı vardır " NEREDE", ancak aşağıda daha fazlası var. Önce komut geliyor" GÜNCELLEME"ardından tablo adı ve ardından" AYARLAMAK"Değiştirmek istediğimiz tüm alanların değerlerini tanımlıyoruz. Bu basit olurdu, ancak şu soru ortaya çıkıyor:" Hangi kaydı güncellemelisiniz?". Bunun için var" NEREDE". Bu durumda, kaydı güncelliyoruz," oturum aç"önemli olan" TestUser". 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 riskiniz vardır.

Biraz daha konuşalım " NEREDE". Basit eşitlik testlerine ek olarak, eşitsizlikler ve mantıksal işlemler de vardır: VE ve VEYA.

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

SQL sorgusu bu kayıtları güncelleyecek İD hangisi daha az 15 VE alan " oturum aç"anlamı var" TestUser". Umarım tasarımı çözmüşsünüzdür." NEREDE"çünkü çok önemli. Kesinlikle." NEREDE"ne zaman kullanılır tablolardan kayıtlar getiriliyorve bu, veritabanları ile çalışırken en sık kullanılan görevdir.

Ve nihayet basit Bir tablodan kayıtları silmek için SQL sorgusu:

WHERE login \u003d "TestUser2" kullanıcılarından SİL

Komuttan sonra " SİL", kayıtları silmek istediğiniz tablonun adıdır. Ardından," NEREDE "yapısını açıklıyoruz. Kayıt, açıklanan koşullarla eşleşirse silinecektir. Yine, tatmin eden kayıt sayısına bağlı olarak unutmayın. sonraki durum " NEREDE", herhangi bir sayıda silinebilir.


Ders temel alınacaktır form geri bildirim hemen hemen her sitede gereklidir.

Adım bir: İçinde veritabanı oluşturma MySQL

Açığız phpMyAdmin (temel pakete dahildir Denwer"a) ve" adlı bir üs oluşturun test_base", kodlamayı seçin" cp1251_general_ci".

İkinci adım: İçinde bir tablo oluşturmak MySQL vasıtasıyla SQL sorguları

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

"Adlı bir tablo oluşturun test_tablo"ve adları olan altı alanla:
"ad" - 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 test_table (
id int (11) null değil auto_increment,
isim varchar (255) null değil,
e-posta varchar (255) boş değil,
tema varchar (255) null değil,
mesaj metni boş değil,
veri tarihi boş değil,
birincil anahtar (kimlik)
);

Adım üç: Form oluşturma

index.html:

MySQL Kaydetme Formu

MySQL'de veri kaydetme biçimine bir örnek

























İstek gönder
İsim:
E-Posta:
Mesaj Konusu:
İleti:
























Adım dört: Bir form işleyici oluşturma " save_form.php"alınan verilerin kaydedildiği MySQL

save_form.php:





/ * Verilerin depolanacağı MySQL tablosu * /
$ tablo \u003d "test_tablosu";

/ * Bağlantı oluştur * /

/ * Geçerli tarihi belirle * /
$ cdate \u003d tarih ("Y-a-g");

/ * Tabloya bilgi eklemek için bir sorgu oluşturuyoruz
isim ... tarih - veri tabanındaki belirli alanların adı;
$ _POST ["test_name"] ... $ _POST ["test_mess"] içinde - bu değişkenler * / formundan alınan verileri içerir
$ sorgu \u003d "INSERT INTO $ tablo SET adı \u003d" ". $ _ POST [" test_name "]." ", e-posta \u003d" ". $ _ POST [" test_mail "]." ",
theme \u003d "". $ _ POST ["test_theme"]. "", mesaj \u003d "". $ _ POST ["test_mess"]. "", data \u003d "$ cdate" ";

/ * Bağlantıyı kapat * /
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 çıkarılması " view_data.php"

view_data.php:

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


$ tablo \u003d "test_tablosu";

/ * Bağlantı oluştur * /
mysql_connect ($ hostname, $ username, $ password) veya die ("Bağlantı oluşturamıyorum");

/ * Veritabanını seçin. Bir hata oluşursa, bunu 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,
"test_tablosu" nun "mesajı", "verileri" * /
$ sorgu \u003d "$ tablodan kimlik, ad, e-posta, tema, mesaj, verileri SEÇİN";

/ * Talebi yerine getiriyoruz. Bir hata meydana gelirse, bunu görüntüleyin. * /


Eko ("

MySQL'den veri çıkışı

Önceden kaydedilmiş verilerin bir MySQL tablosundan çıkarılması










");



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 [" kimlik "]."". $ satır [" veri "]."". $ satır [" ad "]."". $ satır [" e-posta "]."". $ satır [" tema "]."". $ satır [" mesaj "]."
\\ n ");

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

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

del_data.php:

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

/ * Verileri depolayan MySQL tablosu * /
$ tablo \u003d "test_tablosu";

/ * Bağlantı oluştur * /
mysql_connect ($ hostname, $ username, $ password) veya die ("Bağlantı oluşturamıyorum");

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

/ * Silme bağlantısına tıklanmışsa, girişi silin * /
$ del \u003d $ sorgu \u003d "$ tablodan sil (id \u003d" $ del ")";
/ * Talebi yerine getiriyoruz. Bir hata meydana gelirse, bunu görüntüleyin. * /
mysql_query ($ sorgu) veya die (mysql_error ());



/ * Talebi yerine getiriyoruz. Bir hata meydana gelirse, bunu görüntüleyin. * /
$ res \u003d mysql_query ($ sorgu) veya die (mysql_error ());

$ satır \u003d mysql_num_rows ($ res);

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

MySQL'den Verileri Görüntüleme ve Silme

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











");

/ * Belirli alanlardan oluşan bir veritabanından veri çıkarmak için döngü * /
while ($ satır \u003d 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 [" kimlik "]."". $ satır [" veri "]."". $ satır [" ad "]."". $ satır [" e-posta "]."". $ satır [" tema "]."". $ satır [" mesaj "]."Sil
\\ n ");

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

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

update_data.php:

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

/ * Verileri depolayan MySQL tablosu * /
$ tablo \u003d "test_tablosu";

/ * Bağlantı oluştur * /
mysql_connect ($ hostname, $ username, $ password) veya die ("Bağlantı oluşturamıyorum");

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

/ * Düzenleme düğmesine basıldıysa, değişiklik yapın * /
eğer (@ $ submit_edit) (
$ query \u003d "UPDATE $ table SET name \u003d" $ test_name ", email \u003d" $ test_mail ", theme \u003d" $ test_theme ", mesaj \u003d" $ test_mess "WHERE id \u003d" $ güncelleme "";
/ * Talebi yerine getiriyoruz. Bir hata meydana gelirse, bunu görüntüleyin. * /
mysql_query ($ sorgu) veya die (mysql_error ());
}

/ * Veritabanının tamamını $ res değişkenine ekleyin * /
$ sorgu \u003d "SEÇ * $ tablodan";
/ * Talebi yerine getiriyoruz. Bir hata meydana gelirse, bunu görüntüleyin. * /
$ res \u003d mysql_query ($ sorgu) veya die (mysql_error ());
/ * Veritabanındaki kayıtların sayısını bulun * /
$ satır \u003d 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 veritabanından veri çıkarmak için döngü * /
while ($ satır \u003d 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 [" kimlik "]."
". $ satır [" veri "]."
Kullanıcı adı:
Kullanıcı e-postası:
Mesaj Konusu:
İleti:
\\ n \\ n ";
}

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

Hepsi bu kadar, güzel kodlama: 1133:

_________________________________

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

Adım 1 - tablonun oluşturulması

Öncelikle veriler için bir tablo oluşturmanız gerekir. o basit prosedürbu, hosting kontrol panelinizde phpMyAdmin ile yapılabilir.

PhpMyAdmin'de oturum açtıktan sonra şöyle bir arayüz göreceksiniz:
U266072517_name veritabanında "Tablo oluştur" butonuna tıklayarak Öğrenciler adlı bir tablo oluşturalım. Ondan sonra göreceğiz yeni sayfa, gerekli tüm tablo parametrelerini belirlediğimiz:

Bu en çok kolay kurulummasa için kullanılabilir ve 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, dizge değerleri gireceğimiz için varchar'ı seçtik.
  • 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 kullanılması ö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ıtların sayısını otomatik olarak atamak için kullanılan parametre (1,2,3,4 ...).
    "Kaydet" düğmesine tıklayın ve tablo oluşturulacaktır.

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

Seçenek 1 - MySQLi yöntemi

Öncelikle veritabanına bir bağlantı kurmanız gerekir. Bundan sonra SQL INSERT sorgusunu kullanıyoruz. Tam kod örneği:

". mysqli_error ($ bağ);) mysqli_close ($ bağ);?\u003e

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

19. satırla başlayalım:

$ sql \u003d "INSERT INTO Öğrenciler (ad, soyad, e-posta) DEĞERLER (" Thom "," Vial "," [e-posta korumalı]")";

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

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ırayla eklenirdi.

Sonraki bölüm DEĞERLER operatörüdür. Burada sütunlar için değerler belirtiyoruz: isim \u003d Thom, soyadı \u003d Vial, email \u003d [e-posta korumalı]

PHP kodunu kullanarak bir istek gerçekleştirdik. İÇİNDE program kodu SQL sorguları alıntılanmalıdır. Kodun sonraki bölümü (20-22. Satırlar) isteğimizin başarılı olup olmadığını kontrol eder:

eğer (mysqli_query ($ bağ, $ sql)) (echo "Yeni kayıt başarıyla oluşturuldu";)

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

Ve son kısım (22 - 24. satırlar), istek başarılı değilse bir bildirim görüntüler:

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

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-\u003e 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ı, basitçe bir form alanına SQL enjekte edilerek gerçekleştirilebilir. Örneğin:

Bu sözdizimsel olarak doğru SQL olduğundan, noktalı virgül DROP DATABASE kullanıcı_tablosunu yeni bir SQL sorgusu yapar ve kullanıcı tablosu kaldırılır. Hazırlanmış ifadeler (bağlı değişkenler) noktalı virgüllerin ve tırnakların orijinal sorguyu tamamlamasına izin vermez, bu nedenle DROP DATABASE komutu asla çalıştırılmaz.

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

Doğru kod:

getMessage (); ) // Veritabanına eklemek istediğimiz kişi için değişkenleri ayarlayın $ first_Name \u003d "Thom"; $ last_Name \u003d "Flakon"; $ email \u003d " [e-posta korumalı]"; // Veritabanı nesnesinin ready () yöntemini çağıran bir değişken oluşturun // Yürütmek istediğiniz SQL sorgusu bir parametre olarak girilir ve yer tutucular şu şekilde yazılır: yer tutucu_adı $ my_Insert_Statement \u003d $ my_Db_Connection-\u003e 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ğe söyleyeceğiz // İlk parametre yukarıdaki ifadedeki yer tutucudur, ikincisi ise $ my_Insert_Statement-\u003e bindParam (: first_name, $ first_Name); $ my_Insert_Statement-\u003e bindParam (: last_name, $ last_Name); $ my_Insert_Statement-\u003e bindParam (: email, $ email); // Az önce tanımladığımız verileri kullanarak sorguyu yürütün // execute () yöntemi başarılıysa TRUE, değilse FALSE döndürür, size kendi mesajınızı yazdırma seçeneği verir if ($ my_Insert_Statement-\u003e execute ( )) (echo "Yeni kayıt rdcreatedsuccessfully "; ) else (echo "Oluşturulamıyor";) // Bu noktada değişken verilerini değiştirebilir ve veritabanına diğer verileri veritabanına eklemek için bir sorgu çalıştırabilirsiniz $ first_Name \u003d "John"; $ last_Name \u003d "Smith"; $ email \u003d " [e-posta korumalı]"; $ my_Insert_Statement-\u003e execute (); // Değişken değiştirildiğinde tekrar çalıştır if ($ my_Insert_Statement-\u003e 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. Bir öncekinden çok farklı bir bindValue () yöntemi de vardır.

  • bindParam () - Bu yöntem, execute () yöntemine ulaşıldığında verileri değerlendirir. Komut dosyası execute () yöntemine ilk ulaştığında, $ first_Name'in "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 execute () yöntemine ulaştığında, $ first_Name'in 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 zamanlar bir sorgu tanımladığımızı ve onu kodun farklı noktalarında farklı verilerle yeniden kullandığımızı hatırlamak önemlidir.
  • bindValue () - Bu yöntem, bindValue () 'ye ulaşılır ulaşılmaz verileri değerlendirir. $ First_Name, "Thom" olarak ayarlandığından, bindValue () 'ye ulaşıldığında, $ my_Insert_Statement üzerinde her execute () ç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. Betiği çalıştırdıktan sonra, betiğin sonundaki $ first_Name değişkeninin "John" değerine sahip olmasına rağmen, her iki ad da veritabanında gösterilecektir. PHP'nin çalıştırmadan önce tüm betiği kontrol ettiğini unutmayın.

BindParam'ı bindValue ile değiştirmek için betiği güncellerseniz, veritabanına "Thom Vial" ı iki kez eklersiniz ve John Smith yok sayılır.

Adım 3 - Başarının Onaylanması 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 şunu alalım:

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

"Hata: INSERT INTO Students (ad, soyad, e-posta) VALUES (" Thom "," Vial "," [e-posta korumalı]") SQL sözdiziminizde bir hata var;" (ad, soyad, e-posta) VALUES ("Thom", "Vial", "yakınında kullanılacak hak 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 "

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

$ sql \u003d "INSERT INTO Öğrenciler (ad, soyad, e-posta) DEĞERLER (" Thom "," Vial "," [e-posta korumalı]")";

Normal yerine küme parantezi kullandık. Bu yanlıştır ve komut dosyası bir sözdizimi hatası oluşturmuştur.

PDO

PDO bağlantısının 7. satırında, hata modu "tüm istisnaları göster" olarak ayarlanmıştır. Farklı bir değer verilirse ve istek başarısız olursa, herhangi bir hata mesajı almayız.

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

Önemli hata: Yakalanmamış istisna "SQLSTATE: Sözdizimi hatası veya erişim ihlali: 1064 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ıştır (mevcut olmayan sütunlar veya adlarında yazım hatası).
  • Bir tür değer, farklı türden bir sütuna atanır. Örneğin, 47 sayısını İsim sütununa eklemeye çalışırsanız bir hata alırsınız. Bu sütunda bir dize değeri kullanmalısınız. Ama tırnak içinde bir sayı belirtmiş olsaydık (örneğin, "47") işe yarardı, çünkü bu bir dizedir.
  • Mevcut olmayan bir tabloya veri girilmeye çalışıldı. Ve ayrıca tablo adında bir yazım hatası.

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.

Sonuç

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 için PHP Nasıl Kullanılır"Dost proje ekibi tarafından hazırlandı