Veritabanına veri eklemek için php formu. PHP'ye veri ekleme

Yorumlar blogdan taşındı

SERGEY
09/14/2016 01:25
İyi günler!
Bu 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çili satırın DataGridView'dan ve veritabanından kaldırılmasına ihtiyacınız var.

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, bu yöntem DataGridView üzerinden değil ComboBox üzerinden uygulanabilir mi? Ö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, genin 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ğerlerine ekleyin (textBox1, ..)"; 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: Ad ve Soyadı, 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 testtir):

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 ama 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? Farklı kodlama VS ve DB? 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 istemci sunucuya gelmezse.

COLLATION karşılaştırma için kullanılır, ancak bu durumda karakter seti önemlidir. Bu nedenle, önce latin1'de değil, örneğin utf8'de sunucuda doğru 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 bir bağlantı kurun. 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” Kimliği “boş olamaz” hatası veriliyor, Kimlik sütununa eklemeyi kaldırıyorum - bir sonraki sütun için aynısını yazıyor 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

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 yazdıktan sonra MySQL veritabanı("Ekle" sekmesi aracılığıyla) program, hayvanlara tanımlayıcı değeri 1 olan bir satırın eklendiğini size bildirecektir ve editör penceresinde biraz daha aşağıda, kabuk tarafından oluşturulan istek kodu görüntülenecektir. bize ve veritabanı sunucusuna gönderildi.

İ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. Eklemek için SQL'de Yeni hat tablo INSERT deyimini kullanı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 değil, bu alan için otomatik tamamlamayı (otomatik artırma) "etkinleştirdiğimiz" için NULL belirlediğimizi unutmayın.

PHP kullanarak bir kayıt nasıl eklenir

Düşündüğümüz her şey, "majesteleri" sunucu dilinin sahneye girdiği ana eyleme sadece bir "başlangıç". PHP programlama... 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.

Şaşırtıcı olmayan bir şekilde, veri yazmak için MySQL PHPçok sayıda yerleşik işlev sağlar. 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 (BOŞ, "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 gerekiyor.

mysql_connect() fonksiyonunu kullanarak veritabanı sunucusuna bağlanıyoruz. MySQL verileri... İş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.

MySQL veritabanına yazmanın açıklanan tüm örneklerini göstermek için PHP kullanarak Denver Gentleman's Kit'i kullandık. O içerir Yerel sunucu Apache, MySQL sunucusu, phpMyAdmin ve kod oluşturmak ve test etmek için birkaç kullanışlı araç.

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özdizimi 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!

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 bunu otomatik modda yapmak için, bu materyal çalışma için gereklidir.

Başlamak SQL ekleme sorgusu Yeni giriş masaya:

INSERT INTO kullanıcıları (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. Daha sonra 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. Ö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, eşitsizliklerin yanı sıra eşitsizlikler de vardır. mantıksal işlemler: 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:

DELETE FROM users 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.

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 şu sütun sırasını belirledik: id, name, company, bu durumda, id sütunu için NULL değeri ve ad için - " Samsung Galaksi III "ve şirket için -" Samsumg ".

id sütunu AUTO_INCREMENT olarak tanımlandığı için bunun için belirli bir sayısal değer belirtmemize gerek yoktur ve iletebiliriz. Boş değer ve MySQL, sütuna bir sonraki kullanılabilir değeri 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 karakter çıkışı uygularız: ö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ızı sağlayacaktır: XSS saldırıları ve SQL enjeksiyonu.

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

Bu, bir tablo için kullanılabilecek en basit ayardır 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, string 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 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 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 kez bir sorgu tanımladığımızı ve onu komut dosyasındaki farklı noktalarda 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 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ı 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 özel durum "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ı. 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.

Çö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.