Menü
Bedava
kayıt
ana  /  bellenim/ Sql php tablosuna kayıt ekleyin. PHP'ye veri ekleme

sql php tablosuna kayıt ekleme. PHP'ye veri ekleme

Bazı verilerin (örneğin, ad, yaş, adres vb.) girilmesi ve yazılması gereken sitenin veya web uygulamasının tüm modülleri, mysql dilinde INSERT INTO `name_base` (ad, değer1,) basit bir işlev kullanır. değer2) DEĞERLER ('Vasya',' 1 ',' 2 ');

Tüm değişkenler ilk parantezlerde belirttiğimiz değerlere göre veritabanına girilir. İşleyici komut dosyasının, veritabanının ve yapılandırma dosyasının kodlamasını dikkate almak önemlidir. En yaygın UTF-8 kodlamasını kullanmanız önerilir.

Veritabanına yazmanın iki yolu olduğu akılda tutulmalıdır.

ilk yol veritabanı tablolarının hücre adlarını başlangıçta ayarlamazsak. Daha sonra her hücre için tüm değişkenleri yani veritabanı tablosunda kaç hücre olduğunu listelemeliyiz, çünkü DEĞER değerinden sonra parantez içinde birçok değişken listelenmelidir.

Örneğin:
Veritabanı tablosunda dört hücre vardır. Bu, dört değişkenin tümünün DEĞER (..) öğesinden sonra parantez içinde listelenmesi gerektiği anlamına gelir. Ve bir şey daha: değişken yoksa, bunun isteğe bağlı bir parametre olduğunu varsayalım. Sonra sadece "'' tırnak içine boş bir değer yazıyoruz,

"INSERT INTO` name_base` DEĞERLERİ (NULL, `". $ Name. "`, ``, `2`)"; // üçüncü boş değer tırnak içinde yazılır

Ancak bu isteğin bazı küçük sakıncaları vardır. Veritabanı tablosuna bir veya iki hücre eklerseniz, bu sorgu bir hata döndürür. Çünkü bu yöntemde request içindeki tüm hücrelerin listelenmesi zorunludur.

İkinci yol INSERT INTO `name_base` (...) sorgusundan sonra, veritabanı adından sonraki tüm hücreleri listeleyin. Bir örnek zaten biraz daha yüksek tartışıldı. Unuttuysanız tekrar yazalım:

"INSERT INTO` name_base` (`name`,` value`, `value2`) DEĞERLER (NULL,` ". $ Name." `,` `,` 2`) ";

Burada tüm hücreleri listeledik (isim, değer1, değer2). Ve veritabanı tablosuna iki hücre daha eklerseniz, sorgu sözdiziminin değiştirilmesi gerekmez. Ancak, bu çok yeni oluşturulan hücreler için ihtiyaç duyduğumuz çok ek değişkenleri bir istekte bir kerede eklememiz gerekmiyorsa.

Bu hata, sitede küçük bir değişiklikten sonra çok sık çöküyor. Diyelim ki yönetici tabana bir hücre daha ekledi, durum diyelim. Ve komut dosyası işleyicisinin modülü değiştirmek için zamanı yoktu ya da sadece unutmuştu. Ancak bazı siteler çok karmaşık bir yapıya sahiptir ve bir hatayı bulmak çok zaman ve çaba gerektirebilir. Bu nedenle, veritabanına yazmanın ikinci yönteminin kullanılması arzu edilir. Bu tür hatalar daha çok acemi web programcıları tarafından yapılmasına rağmen.

MySQL veritabanına php yazma. pratik örnekler

Böylece, şimdi veritabanı sorgularıyla uğraşmanın en alt kısmına geldik. üzerinde her şeyi yapacağız pratik örnekler... Site ziyaretçileri tarafından bırakılacak yorumları yazmak için basit bir script oluşturalım.

Öncelikle dört hücreli bir veritabanında msg tablosunu oluşturalım. İlk hücreye yorumun kimliğini yazıyoruz. Otomatik artış parametresiyle bir hücredeki on karaktere kadar karakter sayısı. Bu otomatik parametre+1'e her yorum eklediğinizde değişecektir.

Sonraki hücre, kullanıcı adının adıdır. Karakter sayısı, seçtiğiniz iki yüz - üç yüz karaktere kadar, char parametresidir. Ardından hücre yorumu - yorum metnini bu hücreye gireceğiz. Büyük yorum metinleri yazmak istiyorsanız, metin parametresini ayarlayabilirsiniz - o zaman sadece çok büyük metinler, beş yüz binden fazla karakter girebilir veya küçük metin parametresini ayarlayabilirsiniz, o zaman biraz daha az karakter sığacaktır, ancak işe yarayacaktır. biraz daha hızlı.

Ancak bizim durumumuzda ziyaretçilerin büyük metinler yazmayacağını aklımızda tutacağız. Bu yüzden kendimizi kısıtlayacağız ve varchar parametresi ile iki bin karakter sabitleyerek string değerleri yazacağız.

Son hücrede yorum metninin giriş tarihini yazacağız. Geçerli tarih ve saat fonksiyon saatini () kullanarak saniye cinsinden sayısal biçimde yazacağız; Basit olması için, işlevi $ time = time(); değişkenine ayarlayacağız. Ve veritabanında bir hücre oluşturalım. int parametresi ile (sayısal değerler için) time diyelim. Karakter sayısını yazalım - tercihen on bir (gelecek için küçük bir marjla :-).

Veritabanı dökümü aşağıdaki gibidir:

Tablo yapısı `msg` - MEVCUT DEĞİLSE TABLO OLUŞTUR` msg` (`id` int (10) NOT NULL AUTO_INCREMENT,` name` char (250) NOT NULL, `comment` varchar (2000) NOT NULL,` time` int (11) NULL DEĞİL, BİRİNCİL ANAHTAR (`id`)) MOTOR = MyISAM VARSAYILAN CHARSET = utf8 AUTO_INCREMENT = 1;

İşte bu, yorumlar için bir tablo oluşturduk. Şimdi bir yorum yazmak için bir form yazıyoruz ve komut dosyası işleyicisinin kendisi. Yorum formunun HTML kodu aşağıdaki gibidir.

Bu yazıda, belki de en önemlilerinden bazılarını analiz edeceğiz. SQL sorguları... Bu 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. 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. Ö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 tarla " 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ı var. Ardından" WHERE "yapısını anlatıyoruz. Kayıt, açıklanan koşullara uyuyorsa silinecektir. Yine kayıt sayısına bağlı olarak dikkat edin. sonra koşulu karşılayan" NEREDE", herhangi bir sayıda silinebilir.

Bu kılavuzda, veritabanınızı kendi bilgisayarınızdan yönetmeye nasıl başlayacağınızı öğreneceksiniz. PHP senaryo. Çalışacaksın MySQL tablosuna kayıt ekleme, kullanarak PHP kodu... Başlamadan önce, PHP ve veritabanlarıyla çalışmanın temel adımlarını kapsayan diğer eğitimlerimize göz atın - PHP'den MySQL veritabanına bağlanma.

Başlamadan önce aşağıdakileri kontrol edin:

  • Barındırma kontrol panelinize erişim

Adım 1 - tablonun oluşturulması

Öncelikle verileriniz için bir tablo oluşturmamız gerekiyor. Bu çok basit prosedür hangisinde yapabilirsin phpMyAdmin barındırma kontrol panelinizden. Bir önceki derste MySQL veritabanı oluşturma sürecini zaten ele aldık, bu yüzden bu noktayı burada atlayacağız.

phpMyAdmin sayfasına girdikten sonra benzer bir resim göreceksiniz:

isimli bir tablo oluşturalım. öğrenciler veritabanımız için u266072517_adı... butonuna tıklayarak yeni bir tablo oluşturabilirsiniz. Tablo Oluştur... bundan sonra göreceksin yeni sayfa tablonuz için gerekli tüm verileri girebileceğiniz yer:

Bu, bir tablo oluşturmanın en kolay yoludur, tablo/veritabanı yapısı ve her alan için hangi ayarların kullanılabileceği hakkında daha fazla bilgi için resmi phpMyAdmin belgelerine bakın.

İşte kullanacağımız alanların bazı basit açıklamaları:

  • İsim Alanınızın adıdır. Tablonuzun en üstünde görüntülenecektir.
  • Tip- burada alan türünü ayarlayabilirsiniz. Örneğin, biz seçiyoruz varcharçünkü burada bir isimle (sayı değil, harfler içeren) bir dize girmemiz gerekiyor.
  • Uzunluk / Değerler- bu alana girişinizin maksimum uzunluğunu ayarlamak için kullanılır.
  • dizin- "Kimlik" alanımız için "Birincil" dizinini kullanıyoruz. Tablo oluştururken bir adet ID alanı olması tavsiye edilir. Tablolar arasında ilişkiler kurarken bir tablodaki kayıtları indekslemek için kullanılır. Burada da not edilebilir "A_I" bunun anlamı Otomatik artış... Bu ayar, indeksi (1,2,3,4…) otomatik olarak artıracaktır.

Tıklamak Kayıt etmek ve tablonuz oluşturulacaktır.

Adım 2 - PHP Kodu Oluşturma ve MySQL Tablosuna Giriş Ekleme

Seçenek 1 - MySQLi Yöntemi

Her şeyden önce, önceki öğreticimize göre veritabanına bir bağlantı kurmanız gerekir. Bundan sonra, MySQL tablosuna bir kayıt eklemek için SQL sorgusu ile devam edebiliriz - SOKMAK... İşte bağlama ve ekleme yöntemiyle eksiksiz bir kod örneği:

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

Böylece, kodun ilk kısmı (satırlar 3 – 18 ) veritabanına bağlantı kurma bölümüne bakın. Her satırın ne anlama geldiğini bilmek istiyorsanız, bir veritabanına nasıl bağlanılacağına ilişkin önceki eğitimimize bakın.

Çizgiyle başlayalım 19 :

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

Bu, en önemli kod satırıdır ve bu öğreticide açıkladığımız her şeyi yapar - veritabanındaki bir MySQL tablosuna kayıt ekleme. TAKIN Belirtilen MySQL veritabanı tablosuna kayıt ekleyen bir ifadedir. Örneğimizde tabloya veri ekliyoruz. öğrenciler.

Devam ederek, parantez içinde, ekleyeceğimiz değerleri, tablo alanlarını tanımlarız: (ad, soyad, e-posta)... Veriler belirli bir sırayla eklenecektir. yazarsak (e-posta, soyadı, ad), değerler farklı bir sırayla eklenecektir.

Anlamın sonraki kısmı DEĞERLER... Burada daha önce belirtilen alanlara değerlerimizi ayarlıyoruz. Böylece her alan kendi değerini alacaktır. Örneğin, bizim durumumuzda şöyle bir şey olacak: ad = Thom, soyadı = Şişe, e-posta = [e-posta korumalı] .

Burada oluşturduğumuza dikkat etmek önemlidir. SQL sorgusu PHP kodunu kullanarak. SQL sorguları tırnak içine alınmalıdır. Örneğimizde, tırnak işaretleri ile aşağıdaki $ sql = arasındaki her şey bir SQL sorgusudur.

Kodun sonraki kısmı ( 20 – 22 line) isteğimizi çalıştırır ve isteğin başarılı olup olmadığını kontrol eder:

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

İstek doğru bir şekilde çalıştırıldıysa bir başarı mesajı görüntülenir.

Ve son kısım ( 22 – 24 satırları) isteğimizin başarısız olması durumunda başka bir mesaj göster:

Else (echo "Hata:". $ Sql. "
". mysqli_error ($ bağlantı);)

Bu kod, bir şeylerin yanlış gitmesi durumunda bize bir hata mesajı görüntüler.

Seçenek 2 - PHP Veri Nesneleri Yöntemi (P HP D ata O nesnesi)

Önceki örnekte olduğu gibi, önce yeni bir PDO oluştururken yapılan bir veritabanı bağlantısı yapmamız gerekiyor - önceki öğretici bunun nasıl olduğunu açıklıyor. MySQL veritabanı bağlantısı bir PDO nesnesi olduğundan, sorguyu hazırlamak ve çalıştırmak için çeşitli PDO 'yöntemleri' (belirli bir nesnenin parçası olan türdeki işlevler) kullanmalıyız. Nesne yöntemleri şöyle adlandırılır:

$ the_Object-> the_Method();

PDO, SQL kodunu çalıştırmadan önce 'hazırlamanıza' izin verir. SQL Sorgusu lansmandan önce hesaplanmış ve düzeltilmiştir. Yani basit bir saldırı SQL enjeksiyonu form alanına SQL kodu doldurularak yapılabilir. Örneğin:

// Kullanıcı bunu bir oturum açma formunun kullanıcı adı alanına yazar thom "; DROP DATABASE user_table; // Son sorgu şu olur" SELECT * FROM user_table WHERE username = thom "; DROP DATABASE user_table;

SQL kodu sözdizimsel olarak doğru olduğundan, noktalı virgül DROP DATABASE user_table yeni SQL sorgusu ve kullanıcı tablonuz silinir. Hazır İfadeler Karakterlere İzin Vermez ve ; orijinal talebi ve beyanı tamamlamak için VERİTABANI BIRAK asla idam edilmeyecektir.

Hep PDO ile bir veritabanından veri gönderirken veya alırken hazırlanmış ifadeleri kullanın.

Hazırlanan ifadeleri kullanmak için metodu çağıracak yeni bir değişken oluşturmanız gerekir. Hazırlamak () veritabanı nesnesinde.

Doğru biçimde, kod şöyle görünür:

$ sunucuadı = "mysql.hostinger.com"; $ veritabanı = "u266072517_name"; $ kullanıcı adı = "u266072517_user"; $ şifre = "buystuffpwd"; $ sql = "mysql: ana bilgisayar = $ sunucuadı; dbname = $ veritabanı;"; $ dsn_Options =; // PDO kullanarak MySQL veritabanına yeni bir bağlantı oluşturun, $ my_Db_Connection bir nesne denemesidir ($ my_Db_Connection = new PDO ($ sql, $ username, $ password, $ dsn_Options); echo "Başarıyla bağlandı";) catch (PDOException $ error) (echo "Bağlantı hatası:". $ error-> getMessage ();) // 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ı]"; // Burada veritabanı nesnesinin hazırlama () yöntemini çağıran bir değişken oluşturuyoruz // Çalıştırmak istediğiniz SQL sorgusu parametre olarak girilir ve yer tutucular şöyle 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 kullanarak her bir yer tutucunun gerçekte hangi değişkene başvurduğunu betiğine söyleyeceğiz // First parametre, yukarıdaki ifadedeki yer tutucudur - ikinci parametre, $ my_Insert_Statement-> bindParam (: first_name, $ first_Name); $ my_Insert_Statement-> bindParam (: last_name, $ last_Name); $ my_Insert_Statement-> öğesine başvurması gereken bir değişkendir bindParam (: email, $ email); // Az önce tanımladığımız verileri kullanarak sorguyu yürütün // Execute () yöntemi başarılı olursa TRUE, başarılı olmazsa FALSE döndürür, eğer ( ise kendi mesajlarınızı buraya yazmanıza izin verir) $ my_Insert_Statement-> yürüt ()) (echo "Yeni kayıt başarıyla oluşturuldu";) el se (echo "Kayıt oluşturulamıyor"; ) // Bu noktada değişkenlerin verilerini değiştirebilir ve veritabanına daha fazla veri eklemek için tekrar çalıştırabilirsiniz $ first_Name = "John"; $ last_Name = "Smith"; $ e-posta = " [e-posta korumalı]"; $ my_Insert_Statement-> execute (); // Değişkenler değiştiğine göre şimdi tekrar çalıştırın 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 yöntemi kullanıyoruz bindParam () veritabanı nesnesi. yöntemi de var bindValue ()öncekinden farklı.

  • bindParam() - bu yöntem, yöntem kullanıldığında verileri sayar. uygulamak () elde edildi. Komut dosyası yönteme ilk ulaştığında uygulamak () bunu görüyor $ first_Name"Thom" anlamına gelir, bu değeri bağlar ve isteği yürütür. Komut dosyası ikinci kez yönteme ulaştığında uygulamak ()öyle görünüyor $ first_Nameşimdi "John"a atıfta bulunur, bu değeri bağlar ve sorguyu yeni değerle yeniden çalıştırır. Bir kez bir istek oluşturduğumuzu ve ardından komut dosyasındaki farklı yerlerde farklı verileri değiştirdiğimizi anlamak önemlidir.
  • bindValue () - bu yöntem, kuyruk ona ulaşır ulaşmaz verileri değerlendirir. değer olduğundan beri $ first_Name yönteme ulaştığımızda "Thom" olarak ayarlandı bindValue (), yöntem çağrılırken kullanılacaktır uygulamak () için $ my_Insert_Statement.

Lütfen değişkeni yeniden kullandığımızı unutmayın. $ first_Name ve ikinci kez yeni bir değer verin. Bu betiği çalıştırdıktan sonra veritabanınızı kontrol ederseniz, değişkenin değerinin aksine verilen adların ikisi de orada olacaktır. $ first_Name bu betiğin sonunda "John"a eşit olacaktır. PHP'nin komut dosyasını çalıştırmadan önce içeriğini değerlendirdiğini unutmayın.

Komut dosyanızı değiştirerek değiştirirseniz bindParamüzerinde bindValue, sen ekle MySQL veritabanı Veritabanına iki kez “Thom Vial” girer ve John Smith yoksayılır.

Adım 3 - Uygulamanın başarısını kontrol etme ve genel soruları çözme

MySQL veritabanı üzerinde çalıştırdığımız sorgu başarılı olursa aşağıdaki gibi bir mesaj ile karşılaşacağız:

Yaygın hataları çözme

MySQLi

Başka bir durumda, yukarıdaki mesaj yerine bir hata mesajı görüntülenecektir. Örneğin kodumuzda bir syntax hatası yapalım ve şunu elde edelim:

Gördüğümüz gibi kodun ilk kısmı gayet iyi, bağlantı başarıyla kuruldu ancak SQL sorgumuz yürütüldüğünde bir hata ile karşılaştı.

"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 dosyamızı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ı]")";

Gördüğünüz gibi parantez yerine kaşlı ayraç kullanıyoruz. Bu yanlıştır ve betiğimizde bir sözdizimi hatasına neden olur.

PDO

PDO bağlantısının 7. satırında, hata işleme modu 'tüm istisnaları göster' olarak ayarlanmıştır. Bunu komut dosyasından kaldırırsanız ve istek başarısız olursa, herhangi bir hata mesajı almazsınız. İstisnalar etkinleştirildiğinde, karşılaşılan belirli sorunlar görüntülenecektir. Genel olarak, bu en iyi şekilde bir komut dosyası geliştirirken kullanılır, çünkü başka birinden gizlemek istediğiniz veritabanlarının ve tabloların adlarını ortaya çıkarabilir. Yetkisiz Erişim verilerinize. Yukarıdaki durumda, parantez yerine kaşlı ayraçlar kullanıldığında, hata aşağıdaki gibi görünür:

Önemli hata: Yakalanmayan istisna "PDOException", "SQLSTATE: Sözdizimi hatası veya erişim ihlali: 1064 SQL sözdiziminizde bir hata var; "(ad, soyad, e-posta) DEĞERLER (" Thom "," Vial ",") yakınında kullanılacak doğru sözdizimi için MySQL sunucu sürümünüze karşılık gelen kılavuza bakın [e-posta korumalı]")" 1. satırda "

Karşılaşabileceğiniz diğer sorunlar:

  • Alanlar yanlış belirtilmiş (var olmayan alanlar veya adların yazımındaki hatalar).
  • Alan türüyle değer türü uyuşmazlığı. Örneğin bir sayıya değer atamak istediğimizde 47 tarla İsim, değerin bir dize olduğu varsayıldığından bir hata alıyoruz. Ancak, örneğin tırnak içinde bir sayı verirseniz, “47” , hata olmayacak çünkü numaramız bu alana string olarak yazılacaktır.
  • Var olmayan bir tabloya veri girilmeye çalışıldı veya tablo adının yazımında bir hata oluştu.

Bu hataların tümü, hata düzeltme kılavuzları izlenerek veya hata günlüğü kontrol edilerek düzeltilebilir.

Verileri başarıyla ekledikten sonra veritabanımızda görmeliyiz. Burada görüntülendiği gibi verilerimizi eklediğimiz bir tablo örneği verilmiştir. phpMyAdmin.

Çözüm

Bu eğitimde, nasıl kullanılacağını öğrendiniz MySQL tablosuna kayıt eklemek için PHP kodu kullanarak MySQLi ve PDO... Ayrıca yaygın hatalara ve çözümlerine de baktık. MySQL veritabanı eklemek için PHP kodunu nasıl kullanacağınızı bilmek, programlamayı öğreniyor veya kendi web sitenizi oluşturuyor olsanız da kullanışlı olacaktır.

Bu yazıda size söylemek istiyorum Formda girilen veriler Veritabanına nasıl aktarılır... Ve bu şekilde yaratıyoruz basit biçim burada iki alanımız olacak: kullanıcı adı ve onun E-posta:

Adınız:
E-posta adresiniz:


Bu form yeni bir kullanıcı kaydetmek, haber göndermek, istatistik toplamak ve herhangi bir şey için kullanılabilir... Genel olarak, bir kullanıcı verilerini bu forma doldurur: ad ve posta, bir düğmeye tıklar ve ardından veriler bir php betiğine girer:

$ isim = $ _POST ["isim"]; $ eposta = $ _POST ["eposta"]; $ sonuç = mysqli_query ("INSERT INTO kullanıcı (isim, e-posta) DEĞERLER (" $ isim "," $ e-posta ")"); if ($ sonuç) (echo "Veriler başarıyla kaydedildi!";) else (echo "Bir hata oluştu, lütfen tekrar deneyin.";)


Bu senaryoda neler oluyor? Şimdi çözelim!
Forma girilen veriler, POST yöntemiyle php betiğine (yukarıda yazılmıştır) gidin ve $ _POST global dizisini kullanarak, veriler $ name ve $ email değişkenlerine dönüştürülür:

$ isim = $ _POST ["isim"]; $ eposta = $ _POST ["eposta"];


Değişkenler veritabanına girilmeye hazır olduktan sonra bir istek oluşturuyoruz. Ama önce scriptleriniz veritabanına bağlı olmalı, veritabanına nasıl bağlanılır, bu konuya yazdım:İsteğin kendisi şöyle görünür:

$ sonuç = mysqli_query ("INSERT INTO user (isim, email) DEĞERLER (" $ name "," $ email ")");


Bu kodda user tablosundaki name ve email hücrelerine şu değişkenlerin ekleneceğini belirtmiştik: $ name ve $ email.
Ayrıca, her şey yolunda giderse, durumdan bir mesaj alırız:

Veri başarıyla kaydedildi!


Herhangi bir sorun ortaya çıkarsa ve veriler girilmezse bir hata mesajı alırız:

Bir hata oluştu. Lütfen tekrar deneyin.


Bu kadar!

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

Dilerseniz bilgi girmek için daha fazla alan ekleyebilirsiniz, örneğin kullanıcının şehrini girmek için bir alan eklememiz gerekiyor. Zaten hazır bir betiğimiz var (yukarıda yazılmış), şimdi sadece alanı ekliyoruz Senin şehrin, değişkeni adlandıracağız: $ city. Ve böylece veri giriş formunda, sonra:

E-posta adresiniz:


Ekle:

Senin şehrin:


Bir php betiğinde, sonra:

$ eposta = $ _POST ["eposta"];


Ekle:

$ şehir = $ _POST ["şehir"];


Ve tabii ki, isteği de şu şekilde ekliyoruz:

$ sonuç = mysqli_query ("INSERT INTO kullanıcı (isim, e-posta, şehir) DEĞERLER (" $ isim "," $ e-posta "," $ şehir ")");


İşte bitirmeniz gerekenler:
Giriş formu:

Adınız:
E-posta adresiniz:
Senin şehrin:


Senaryo:

$ isim = $ _POST ["isim"]; $ eposta = $ _POST ["eposta"]; $ şehir = $ _POST ["şehir"]; $ sonuç = mysqli_query ("INSERT INTO kullanıcı (isim, e-posta, şehir) DEĞERLER (" $ isim "," $ e-posta "," $ şehir ")"); if ($ sonuç == true) (echo "Veriler başarıyla kaydedildi!";) else (echo "Bir hata oluştu, lütfen tekrar deneyin.";)


Gördüğünüz gibi, karmaşık bir şey yok! Gerekirse, başka bir alan ekleyebilirsiniz ve daha fazlasını ve daha fazlasını ...

Yorumlar blogdan taşındı

SERGEI
09/14/2016 01:25
Tünaydın!
Ş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çili satırın DataGridView'dan 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.

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
Merhaba. Ö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ğ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

SERGEI
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, ancak veritabanında (mysql) Kiril alfabesi yerine "????"

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
Merhaba.

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 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ı çı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