MySQL, php'deki örnekleri sorgular. SQL - sorgular ve PHP ile işlenmesi

PHP İLE MySQL VERİTABANI İLE ÇALIŞMAK

Ders. VS Prokhorov tarafından hazırlanmıştır.


1. PHP SENARYOLARINI MySQL tablolarına BAĞLAMAK

PHP kullanarak bir MySQL veritabanıyla çalışmanıza izin veren en sık kullanılan işlevleri ele alalım.

PHP ve MySQL etkileşime girdiğinde, program bir dizi işlev aracılığıyla DBMS ile etkileşime girer.

1.1 Sunucuya bağlanma. İşlevmysql_connect

Veritabanıyla çalışmadan önce onunla yüklemeniz gerekir. ağ bağlantısı, kullanıcıya yetki vermenin yanı sıra. Bu, mysql_connect () işlevi kullanılarak yapılır.

kaynak mysql_connect (]])

Bu işlev, $ sunucusu ana bilgisayarında (varsayılan olarak bu, yerel ana bilgisayardır, yani geçerli bilgisayardır) bulunan MySQL veritabanına bir ağ bağlantısı kurar ve açık bağlantının tanımlayıcısını döndürür. Diğer tüm çalışmalar bu tanımlayıcı ile gerçekleştirilir. Bu tanımlayıcıyı (tanımlayıcıyı) bağımsız değişken olarak alan diğer tüm işlevler, seçilen veritabanını benzersiz bir şekilde tanımlayacaktır. Kayıt olurken, kullanıcı adı $ kullanıcı adı ve parola $ parola belirtilir (varsayılan olarak, mevcut işlemin başlatıldığı kullanıcı adı - komut dosyalarında hata ayıklarken: kök ve boş bir parola):

$ dbpasswd = ""; //Parola

// Bir uyarı göster

Eko ("

");

$ dblocation, $ dbuser ve $ dbpasswd değişkenleri sunucu adını, kullanıcı adını ve parolayı saklar.

1.2 Sunucuyla bağlantının kesilmesi. İşlevmysql_close

MySQL sunucusuna bağlantı, komut dosyası sona erdiğinde veya mysql_close işlevi çağrıldığında otomatik olarak kapatılacaktır.

bool mysql_close ()

Bu işlev MySQL sunucusuyla olan bağlantıyı keser ve işlem başarılıysa true, aksi takdirde false döndürür. İşlev, mysql_connect işlevi tarafından döndürülen veritabanı bağlantısına bir tanıtıcı argüman olarak alır.

$ dblocation = "localhost"; // Sunucu adı

$ dbuser = "kök"; //Kullanıcı adı

$ dbpasswd = ""; //Parola

// Veritabanı sunucusuna bağlanın

// Fonksiyonu çağırmadan önce @ sembolü ile hata çıktısını bastır

$ dbcnx = @ mysql_connect ($ dblocation, $ dbuser, $ dbpasswd);

if (! $ dbcnx) // Tanımlayıcı 0 ise bağlantı kurulmaz

// Bir uyarı göster

Eko ("

B şu anda veritabanı sunucusu kullanılamıyor, bu nedenle sayfa doğru görüntülenemiyor.");

if (mysql_close ($ dbcnx)) // bağlantıyı kapat

echo ("Veritabanı bağlantısı sonlandırıldı");

echo ("Bağlantı tamamlanamadı");

1.3 Veritabanının oluşturulması. VERİTABANI OLUŞTUR işlevi

- veritabanı oluştur komutu yalnızca sunucu yöneticisi tarafından kullanılabilir ve çoğu barındırmada yürütülemez:

VERİTABANI OLUŞTUR VeritabanıAdı

DatabaseName adlı yeni bir veritabanı oluşturur.

Bu işlevle çalışmaya bir örnek:

@mysql_query ("CREATE DATABASE $ dbname");

SQL - komutlarını içeren satırlar için sınırlayıcı olarak her yerde kesme işareti ("SQL - komutu") kullanılması önerilir. Bu, hiçbir $ - değişkeninin yanlışlıkla enterpolasyon yapılmamasını (yani değeriyle değiştirilmemesini) ve komut dosyalarının güvenliğinin artmasını sağlayabilir.

CREATE DATABASE veritabanı oluşturma komutu yalnızca süper kullanıcı tarafından kullanılabilir ve çoğu barındırma sitesinde sıradan bir kullanıcının bunu yürütmesi imkansızdır. Yalnızca sunucu yöneticisi tarafından kullanılabilir.

Deneme için komut satırından bir SQL sorgusu çalıştırarak bir testbase veritabanı oluşturalım. Bunu yapmak için MySQL'e giriş yapmanız ve yazmanız gerekir. Komut satırı MySQL:

mysql> veritabanı test tabanı oluştur;

Bundan sonra şunu yazmalısınız:

mysql> test tabanını kullanın;

Veritabanı oluşturuldu:


1.4 Veritabanı seçimi. İşlevmysql_select_db

İlk sorguyu MySQL sunucusuna göndermeden önce hangi veritabanı ile çalışacağımızı belirtmeniz gerekmektedir. mysql_select_db işlevi bunun için tasarlanmıştır:

bool mysql_select_db (dize $ veritabanı_adı [, kaynak $ link_identifier])

PHP'ye $ link_identifier bağlantısındaki diğer işlemlerin $ database_name veritabanını kullanacağını bildirir.

Bu işlevi kullanmak, bir SQL sorgusunda use komutunu çağırmaya eşdeğerdir, yani mysql_select_db işlevi, daha fazla çalışma için bir veritabanı seçer ve sonraki tüm SQL sorguları seçilen veritabanına uygulanır. İşlev, seçilecek veritabanının adını, veritabanı_adı ve bağlantı tanımlayıcı kaynağını bağımsız değişken olarak alır. İşlem başarılıysa işlev true, aksi takdirde false döndürür:

// Veritabanı bağlantı kodu

if (! @mysql_select_db ($ dbname, $ dbcnx))

// Bir uyarı göster

Eko ("

Veritabanı şu anda mevcut değil, bu nedenle sayfa düzgün görüntülenemiyor.");

1.5 Hata işleme

MySQL ile çalışma sürecinde hatalar oluşursa (örneğin, sorguda parantezler dengeli değil veya yeterli parametre yoksa), aşağıdaki iki fonksiyon kullanılarak hata mesajı ve numarası elde edilebilir.

Bu işlevleri dikkatli ve zamanında kullanmak önemlidir, aksi takdirde komut dosyalarında hata ayıklamak zor olabilir.

● İşlev:

int mysql_errno()

son kaydedilen hatanın numarasını döndürür. Komut dosyası işlemi sırasında yalnızca bir bağlantı kurulmuşsa, bağlantı tanımlayıcısı $ link_identifier atlanabilir.

● İşlev:

string mysql_error ()

sayı değil, hata mesajının metnini içeren bir dize döndürür. Hata ayıklama amaçları için kullanışlıdır. Genellikle mysql_error veya die () yapısıyla birlikte kullanılır, örneğin:

@mysql_connect ("localhost", "kullanıcı", "şifre")

or die ("Veritabanına bağlanırken hata oluştu:" .mysql_error ());

@ operatörü, her zamanki gibi, bir hata durumunda oluşabilecek standart uyarıyı bastırmaya yarar.

İÇİNDE en son sürümler PHP uyarıları, varsayılan olarak MySQL işlevlerinde günlüğe kaydedilmez.

1.6 MySQL'e otomatik bağlantı. Dosya (config.php)

Genellikle sitede aynı veritabanına erişmesi gereken birkaç komut dosyası vardır.

MySQL'e bağlanmaktan sorumlu kodu şurada vurgulamanız önerilir: ayrı dosya ve ardından dahil etme işlevini kullanarak bağlanın gerekli komut dosyaları.

Bir veritabanı bağlama, seçme ve oluşturma işlevlerini, sunucu adı $ dblocation, kullanıcı adı $ dbuser, parola $ dbpasswd ve veritabanı adı $ dbname olan değişkenlerin bildirildiği aynı dosyaya (config.php) koymak mantıklıdır:

config.php listeleniyor:

//config.php sunucuya bağlanmak ve veritabanını seçmek için parametreleri içeren dosyanın kodu

// tarayıcıya bağlantı hata mesajlarını yazdırır

$ dblocation = "localhost"; // Sunucu adı

$ dbname = "veritabanı adı girin" // Veritabanı adı: oluşturulmuş veya zaten mevcut

$ dbuser = "kök"; // Veritabanı kullanıcı adı

$ dbpasswd = ""; //Parola

// Veritabanı sunucusuna bağlanın

// Fonksiyonu çağırmadan önce @ sembolü ile hata çıktısını bastır

[e-posta korumalı] _connect ($ dblocation, $ dbuser, $ dbpasswd);

if (! $ dbcnx) // Tutamaç 0 ise, veritabanı sunucusuna bağlantı kurulmaz

// Bir uyarı göster

Eko ("

Veritabanı sunucusu şu anda kullanılamıyor, bu nedenle sayfa düzgün görüntülenemiyor.

");

// $ dbname veritabanı oluştur - bunu sadece süper kullanıcı yapabilir

// Veritabanı zaten mevcutsa, önemli olmayan bir hata olacaktır.

@mysql_query ("Varsa DATABASE OLUŞTUR $ dbname ');

// Veritabanı ile bağlantı kodu: yeni oluşturulan bir veritabanının veya mevcut bir veritabanının açık bir seçimini yapıyoruz

// Fonksiyonu çağırmadan önce @ sembolü ile hata çıktısını bastır

Eğer ( [e-posta korumalı] _select_db ($ dbname, $ dbcnx)) // Tanımlayıcı 0 ise, veritabanı bağlantısı kurulmaz

// Bir uyarı göster

Eko ("

Veritabanı şu anda mevcut değil, bu nedenle sayfa düzgün görüntülenemiyor.

");

// Küçük yardımcı fonksiyon hangi mesajı yazdırır

// veritabanı sorgu hatası durumunda bir hata hakkında

işlev hatası ($ mesajı)

Eko ("");


2. VERİTABANI TALEPLERİNİN GERÇEKLEŞTİRİLMESİ

2.1 Tablo oluşturma. İşlevTABLO OLUŞTUR:

CREATE TABLE Tablo Adı (AlanAdı türü, AlanAdı türü,)

Bu komut, adları (FieldName) ve belirtilen türlerle tanımlanan sütunlar (alanlar) ile veritabanında yeni bir tablo oluşturur. Bir tablo oluşturduktan sonra, bu komutta listelenen alanlardan oluşan kayıtlara ekleyebilirsiniz.

test_11.php listeleniyor. Veritabanında yeni bir tablo oluşturan program:

"config.php" içerir; // Sunucuya bağlanın ve veritabanını seçin

mysql_query ("Mevcut insanlar yoksa TABLO OLUŞTUR

id INT AUTO_INCREMENT BİRİNCİL ANAHTAR,

veya öl ("MySQL hatası:" .mysql_error ());


Bu komut dosyası, iki alanlı yeni bir kişi tablosu oluşturur. İlk alan INT (integer) tipindedir ve isim id'dir. İkincisi, METİN türü (metin dizisi) ve ad adıdır.

Tablo varsa veya die () tetiklenir.

Eğer belirtilirse, isteğe bağlı if not notu yan tümcesi, MySQL sunucusuna, belirtilen ada sahip bir tablo zaten veritabanında mevcutsa, bir hata mesajı oluşturmamasını söyler.

Ne olduğunu bilmediğim günleri hatırlıyorum mysql ve genellikle bu tür makaleler için internette arama yaptı. Ancak, bir nedenden dolayı nadiren bulundular. Şimdi bu konuda faydalı makaleler yayınlamaya karar verdim. mysql ve php biri daha oldu. Her şeyi erişilebilir bir dilde yazmaya çalışacağım.

mysql ve php'ye başlarken

Yani, çalıştırabilmek için önce yerel bir sunucuya ihtiyacımız var. php betikleri ve veritabanına bağlanın (bundan sonra "veritabanı" anlamına gelen veritabanını arayacağım). Halihazırda bir yerel sunucunuz yoksa, önce Kurulum ve Yapılandırma bölümünü okumalısınız. yerel ana bilgisayar ve ardından veritabanını incelemeye başlayın mysql ve onun DBMS'si (veritabanı yönetim aracı).

Zaten bu sunucuya sahipseniz, bunu yapıyoruz. İlk olarak, sizi DBMS ile tanıştırmak istiyorum. PhpMyAdmin, veritabanındaki kayıtları yönetmenizi (ekleme, silme, değiştirme) sağlar.

Bu ana sayfa PhpMyAdmin VTYS... Buradan kendi veritabanınızı oluşturabilir ve gerekli kayıtları içinde saklayabilirsiniz. Bu, site oluştururken çok uygundur, çünkü bilgiler yapılandırılmıştır ve veritabanından herhangi bir kaydı çok hızlı bir şekilde alabilirsiniz.

Daha önce de belirtildiği gibi, makalenin ilk bölümü, tanışma mysql ve phpmyadmin... Artık mysql'nin ne olduğunu anladığınızı düşünüyorum ve phpmyadmin'in işlevselliğini keşfetmeye başlayabiliriz. Başlamak için veritabanının kendisini (veritabanı) oluşturmamız gerekiyor. Kendi adına sahip olacak, daha sonra onu arayacağız.

Veritabanının yapısının genel yapısı şu şekildedir:

Bir veritabanı oluşturmak için, gelecekteki veritabanı için "Yeni veritabanı oluştur" satırının altındaki giriş alanına (PhpMyAdmin'in ana sayfasında) herhangi bir ad (Kiril değil!) girin. "Baza" adında bir veritabanı oluşturacağım. Şimdi, veritabanı yapısının şemasını takip ederek bir tablo yapmamız gerekiyor. Bunu yapmak için, üssü oluşturduktan sonra aşağıdaki pencereye sahip olacaksınız:

Burada users adında bir tablo ve içinde 3 alan oluşturuyorum. Sonraki phpmyadmin bizden her alan için bir yapı tanımlamamızı isteyecek:

Burada, "Alan" sütununda, adı belirtmeniz gerekir, "Tip" bölümünde orada depolanacak veri türünü belirtin (INT bir sayıdır, VARCHAR bir dize veya küçük (!) Metindir). "Ek" alanında, "id" alanına "id" parametresini belirtin, bu, herhangi bir veri eklediğinizde artacağı anlamına gelir ve "Birincil anahtar" parametresini buna ayarlayın (bir tur atın), bu ilk sütunda alanı benzersiz bir şekilde tanımlayabileceğimiz anlamına gelir.

“Alanı açık bir şekilde tanımlayın” - bu, ad ve soyadları aynı olsa bile, “id” sütununun farklı değerlere sahip olacağı anlamına gelir (çünkü her seferinde otomatik olarak bir artırılır).

Şimdi "Kaydet" e tıklayın. Böylece, kullanıcı veritabanında ad ve soyadını (id girilmesine gerek yok, mysql bizim için her şeyi yapacak) saklayabileceğimiz users tablosunu oluşturduk. Kayıtları saklamak için tablo oluşturduk. Ve onları oraya nasıl yerleştirebilirim? Aşağıyı okuyun 😉

"Ekle" menüsünü seçin ve gerekli alanlara gerekli değerleri yazın. Şimdi PhpMyAdmin ile bir mysql veritabanındaki değerler nasıl silinir veya değiştirilir... Silmek için Gözat menüsüne gitmeniz ve girişin yanındaki kırmızı çarpı işaretine tıklamanız yeterlidir:

Düzenlemek için kaleme tıklayın ve gerekli alanları değiştirin. Neyse bu ders bitti. Artık PhpMyAdmin'i kullanarak mysql veritabanınızı yönetebilirsiniz. Bir sonraki derste size veri tabanında nasıl veri depolayacağınızı, alacağınızı, sileceğinizi ve güncelleyeceğinizi öğreteceğim. php kullanarak... Çok kullanışlı ve pratiktir.

php'den mysql veritabanı ile çalışma

Bu nedenle, önce zaten bilinen bir veritabanına nasıl bağlanacağınızı öğrenmeniz gerekir. Bunun için aşağıdaki kod kullanılır:

Yukarıdaki kodda, login kullanarak localhost sunucusuna bağlandım. kökşifre gerektirmez (bu nedenle, onu belirtmiyoruz). Veritabanına bağlandıktan sonra phpmyadmin VTYS'de yapılan tüm bu işlemleri gerçekleştirebiliriz. Yani, çeşitli bilgilerin eklenmesi, silinmesi, değiştirilmesi ve geri alınması. Şimdi nokta nokta:

php'de SQL veritabanına kayıt ekleme

$ sorgu = "INSERT INTO` tablo` (`bir alan belirtin`,` bir alan belirtin`) DEĞERLER ("herhangi bir değer", "herhangi bir değer") "; $ sonuç = mysql_query ($ sorgu); if ($ sonuç == true) (echo "Başarılı!";) else (echo "Hata!
".MySQL Hatası ();)

Yani ekleme, INSERT işleviyle yapılır. Her şey yolunda giderse, mysql true değerini döndürür, aksi takdirde - false.

En az kaç tane alan belirleyebilirsiniz, asıl mesele hepsinin veritabanında bulunmasıdır. Yani, örneğin, "ad", "soyadı" ve "şehir" alanlarının bulunduğu bir tablo var. İçine değerler eklemek için aşağıdaki kodu kullanacağız:

$ sorgu = "INSERT INTO` kullanıcılar` (`isim`,` soyad`, `şehir`) DEĞERLER (" Ruslan "," Huzin "," Kokshetau ")"; $ sonuç = mysql_query ($ sorgu); if ($ sonuç == true) (echo "Başarılı!";) else (echo "Hata!
".MySQL Hatası ();)

PHP'de SQL veritabanından kayıtları silme

Silme, DELETE işlevi tarafından gerçekleştirilir. Bunu yapmak için, bu kod gibi bir şey olacak:

$ sorgu = "DELETE FROM` kullanıcılar` WHERE `name` =" Ruslan ""; $ sonuç = mysql_query ($ sorgu); if ($ sonuç == true) (echo "Başarılı!";) else (echo "Hata!
".MySQL Hatası ();)

Yani, ad sütununun Ruslan değerine eşit olduğu kullanıcılar tablosundan (iyi veya bir) tüm satırları sileceğiz.

PHP'de MySQL veritabanındaki değerleri değiştirme

Tabloda zaten var olan kayıtlarda da değişiklik yapabiliriz. Örneğin soyadı sütununun Huzin olduğu satırdaki ad sütununun değerini değiştirmek istiyoruz. Bunu yapmak için aşağıdaki kodu çalıştırıyoruz:

$ sorgu = "GÜNCELLEME" kullanıcılar` SET `ad` =" benim adım "NEREDE` soyadı` = "Huzin" "; $ sonuç = mysql_query ($ sorgu); if ($ sonuç == true) (echo "Başarılı!";) else (echo "Hata!
".MySQL Hatası ();)

Veritabanından değerlerin alınması

Şimdi eğlenceli kısım geliyor. Madem bir şey kaydettik, geri almamız gerekmiyor mu? Örneğin, name sütununun Ruslan'a eşit olduğu users tablosundan tüm satırı almamız gerekiyor. Bunu yapmak için ilk örneklerden biraz farklı bir koda ihtiyacımız var. İşte o aslında:

$ sorgu = "SEÇ * NEREDEN` isim` = "Ruslan" "; $ sonuç = mysql_query ($ sorgu); if ($ sonuç == true) (echo "Başarılı!";) else (echo "Hata!
".mysql_error ();) $ data = mysql_fetch_array ($ sonuç); / * Artık değişken tablodaki verileri depoluyor * /

Burada, seçilen verileri php'deki bir değişkene (diziye) yazmak için bir fonksiyona daha ihtiyacımız vardı. Seçilen satıra atıfta bulunmak için şöyle yazıyoruz:

$ data ["sütun adı"]

yani, soyadını seçilen satırdan (adın Ruslan olduğu yerde) almak için çıktıya yazmalıyız:

echo $data ["soyad"];

Ve bir tablodan seçim yaparken SELECT * yazmışlar, bu yıldız işareti, satırdan tüm sütunları seçmeniz gerektiği anlamına gelir. Örneğin sadece soyadı seçmemiz gerekirse, SELECT `soyadı` yazıyoruz. Tablodan aynı anda birkaç satır seçmek için, bunları görüntülemek için bir döngüye de ihtiyacınız olacak. Bu, örneğin, Ruslan sütununda birkaç satır olacaksa. İşte kod:

$ sorgu = "SEÇ * NEREDEN` isim` = "Ruslan" "; $ sonuç = mysql_query ($ sorgu); while ($ data = mysql_fetch_array ($ sonuç)) (echo $ data ["ad"]. "
". $ veri [" soyadı "]."


"; }

Şimdi, ad sütununun Ruslan değerine eşit olduğu tüm satırlar görüntülenecektir.

Artık temel kontrol fonksiyonlarıyla tanıştınız. mysql veritabanı doğrudan php betiği.

Bu yazıda öğreneceğiz PHP aracılığıyla veritabanı sorguları gönder... Bu makale çok önemlidir ve sizin tarafınızdan anlaşılmalıdır. Ancak, sizi temin ederim - malzeme çok basit, bu yüzden hiçbir zorluk olmamalıdır.

Yazının konusuna geçmeden önce detaylı analiz yapmayacağım konusunda sizi şimdiden uyarıyorum. SQL dili... Gerekli tüm bilgiler özel kategoride sıralanmıştır ve burada sadece PHP üzerinden MySQL ile çalışma.

şimdi devam edelim PHP'de veritabanı sorguları gönderme:


}
$ mysqli-> sorgusu ("INSERT INTO mytable (isim, e-posta) DEĞERLER (" MyName "," [e-posta korumalı]")");
$ mysqli-> kapat();
?>

Bu örnekte, veritabanına bağlandık, bağlantının başarılı olduğunu kontrol ettik ve yöntemi kullanarak bir istek gönderdik. sorgu () ve ardından bağlantıyı kapattı. Gördüğünüz gibi, her şey çok basit. herhangi birini göndermek için SQL sorguları sadece bir yöntem yeterlidir - sorgu (), yani bu durumda her şey delice basittir.

Şimdi görevi biraz karmaşıklaştıralım. Geri dönen istekleri sizinle birlikte analiz edelim sonuç kümesi- sonuç. Dönen en popüler sorgu sonuç kümesi bir tablodan veri seçimidir. Aşağıdaki örnekte, sizinle bir veri seçimi yapacağız ve ardından sonucu görüntüleyeceğiz:

$ mysqli = @new mysqli ("localhost", "Admin", "pass", "mybase");
if (mysqli_connect_errno ()) (
echo "Bağlanamadı:" .mysqli_connect_error ();
}
$ sonuç_kümesi = $ mysqli->
while ($ satır = $ sonuç_set-> fetch_assoc()) (
print_r ($ satır);
Eko "
";
}
$ sonuç_set-> kapat();
$ mysqli-> kapat();
?>

Başlamak için, ne olduğunu biraz açıklayacağım. sonuç kümesi. Sonuç kümesi sonucu olan bir tablodur. Bu tablonun bir dizi kaydı vardır (tablo satırları). Ve tüm kayıtları görüntülemek için tablonun her satırını tekrarlamanız ve görüntülemeniz gerekir. Ve şimdi bir örnek açıklayacağım: bir istek gönderdikten sonra oluşturduk sonuç kümesi... Ardından, bir döngüde değişkene atadık sıra sonraki satırın değeri, yani yöntemin döndürdüğü tek boyutlu bir dizi fetch_assoc ()... Tüm satırlar bittiğinde, yöntem fetch_assoc () geri dönücek yanlış, ve döngüden çıkılacaktır. Döngünün içinde süre sadece hata ayıklama işlevini kullanarak dizi çıktısını alıyoruz print_r () kullanılarak kesinlikle çıkarılmış olsa da her biri için ama buna şimdi gerek yok.

Nasıl çalışılacağını kısaca özetleyelim sonuç kümesi:

  1. Elde etmek sonuç kümesi veritabanına uygun bir sorgu göndererek.
  2. Döngüde, her yinelemede, bir sonraki satırı (kayıt) sonuç kümesi yöntemi kullanarak fetch_assoc () bazı değişken sıra... Ardından, bu değişkenle, anahtarların tablo alanlarının adları olduğu ve değerlerin geçerli kayda karşılık geldiği tek boyutlu bir ilişkisel dizide olduğu gibi çalışabilirsiniz.
  3. kapattığınızdan emin olun sonuç kümesi yöntem kapat () kaynaklara hakim olmak.

Gördüğünüz gibi yöntem fetch_assoc () her zaman bir sonraki kaydı döndürür. Yani, önce 1., sonra 2., sonra 3. vb. İyi bir programlama deneyiminiz varsa, bunun elbette hareket ettirebileceğiniz dahili işaretçiden kaynaklandığını hemen tahmin edeceksiniz. Nerede kullanılır? Örneğin, bu, birlikte çalışmanız gerektiğinde kullanılabilir. sonuç kümesi olumsuzluk 1 , ancak 2 ve daha fazla kez. Aynı isteği tekrar oluşturmamak için imleci başa taşımanız yeterlidir. Ve sonra tekrar kaba kuvvet uygulayabilirsin sonuç kümesi fetch_assoc() yöntemini kullanarak.

İşaretçinin konumunu değiştirmek için bir yöntem var veri_arama () hangi bir tamsayı alır 0 önce " kayıt sayısı - 1", sırasıyla, işaretçi parametreye karşılık gelen girişe gider:

$ mysqli = @new mysqli ("localhost", "Admin", "pass", "mybase");
if (mysqli_connect_errno ()) (
echo "Bağlanamadı:" .mysqli_connect_error ();
}
$ sonuç_kümesi = $ mysqli-> sorgu ("Seçim * tablomdan");
$ sonuç_set-> num_rows;
while ($ satır = $ sonuç_set-> fetch_assoc()) (
print_r ($ satır);
Eko "
";
}
$ sonuç_set-> data_seek (0);
while ($ satır = $ sonuç_set-> fetch_assoc()) (
print_r ($ satır);
Eko "
";
}
$ sonuç_set-> kapat();
$ mysqli-> kapat();
?>

Bu örnekte, çıkardığımız sonuç kümesindeki kayıt sayısı mülkü kullanmak num_rows... Ve ayrıca yöntemle tanıştım veri_arama ()... Yani, tüm sonucu yineledik, sonra bir işaretçi döndürdük. 0. sonucu tekrar kaydedin ve yineleyin.

Bu yazımızda veritabanına bağlanmayı ve bağlantıyı kapatmayı tekrarladık. Ve ayrıca öğrendim PHP ile veritabanı sorguları nasıl gönderilir... Öğrendi, sonuç_kümesi nasıl elde edilir ve onunla nasıl çalışılır. Başarılı olmak için bilmeniz gereken tek şey bu. PHP'de MySQL ile çalışmak.

MySQL veritabanınızdan en iyi şekilde yararlanmak için, özel bir PHP programından MySQL veritabanına nasıl bağlanılacağını anlamak önemlidir.

Bu öğretici, PHP kullanarak bir veritabanına nasıl bağlanılacağını açıklayan karşılık gelen bir PHP örnek programıyla birlikte aşağıdaki üç yöntemi açıklar.

  • Mysqli Uzantısı ile Bağlanma (Önerilen)
  • PDO Bağlantısı (Önerilen)
  • Eski mysql_ geleneksel işlevleri kullanarak bağlanma (kullanımdan kaldırıldı)

Bunu yapmak için PHP-MySQL paketini kurmanız gerekir.

Aşağıdakileri içeren RedHat dağıtımına dayalı olarak, aşağıda gösterildiği gibi PHP-MySQL'i kurmak için yum kullanın.

Yum php-mysql yükleyin

Sisteminize bağlı olarak, yukarıdaki aşağıdaki bağımlılıkları yükleyeceğiz veya güncelleyeceğiz:

  • php-cli
  • php-ortak
  • php-pdo
  • php-pgsql

Her şey yüklendikten sonra, phpinfo sayfası MySQL modülünü aşağıda gösterildiği gibi görüntüleyecektir:

Aşağıdaki tüm örnekler için zaten var olan bir MySQL veritabanına bağlanacağız. MySQL'de yeniyseniz, başlamak için burası iyi bir yerdir:.

Not: Burada açıklanan her şey, MySQL'de olduğu gibi MariaDB ile de çalışacaktır.

1. PHP'de Mysqli uzantısını kullanarak bağlantı

MySQLi, MySQL Geliştirilmiş anlamına gelir.

Lütfen çoğu dağıtımda (ör: CentOS), PHP-MySQLi'nin zaten PHP-MySQL paketinin bir parçası olduğunu unutmayın. Bu şekilde PHP-MySQLi paketini aramanız ve kurmanız gerekmez. Mysqli uzantısının sisteminizde çalışmasını sağlamak için tek yapmanız gereken PHP-MySQL paketini kurmaktır.

Apache'de DocumentRoot'ta aşağıdaki mysqli.php dosyasını oluşturun:

connect_error) (die ("Hata: bağlanılamıyor:". $ conn-> connect_error);) echo "Veritabanına bağlanılıyor.
"; $ sonuç = $ bağlantı-> sorgu (" çalışandan isim SEÇ "); yankı" Satır sayısı: $ sonuç-> num_rows "; $ sonuç-> kapat (); $ bağlantı-> kapat ();?>

Yukarıda:

  • MySQLi - Bu işlev, Mysqli uzantısını kullanarak yeni bir bağlantı başlatacaktır. Bu fonksiyon dört argüman alacaktır:
    1. MySQL veritabanının çalıştığı ana bilgisayar adı
    2. MySQL bağlantı kullanıcı adı
    3. mysql kullanıcısı için şifre
    4. Bağlanmak için MySQL veritabanı.
  • Sorgu İşlevi - MySQL sorgunuzu belirtmek için bunu kullanın. Bu örnekte, çalışan veritabanından ad sütununu seçiyoruz.
  • Son olarak, num_rows değişkeni kullanılarak seçilen satır sayısını görüntülüyoruz. Bağlantıyı da yukarıda gösterildiği gibi kapatıyoruz.

Veritabanı bağlantısı. Satır sayısı: 4

Not: Uzak bir MySQL veritabanına bağlanmaya çalışıyorsanız, ana bilgisayar bağlantısı reddedildi hatasını önlemek için bunu yapabilirsiniz: Bir MySQL istemcisinin uzak bir MySQL sunucusuna bağlanmasına nasıl izin verilir.

2. PDO uzantısıyla PHP kullanarak MySQL'e bağlanma

PDO, PHP Veri Nesneleri anlamına gelir.

PDO_MYSQL, bir programı MySQL veritabanına bağlamak için PHP tarafından sağlanan PDO arayüzünü uygular.

Çoğu Linux dağıtımında (örn. CentOS ve RedHat), PHP-PDO paketi zaten PHP-MySQL paketine dahil edilmiştir. Bu şekilde PHP-PDO paketini aramanız ve kurmanız gerekmez. PDO_MYSQL PHP eklentisinin sisteminizde çalışmasını sağlamak için tek yapmanız gereken PHP-MySQL paketini kurmaktır.

Apache DocumentRoot'unuzda aşağıdaki MySQL-pdo.php dosyasını oluşturun:

setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION); echo "Veritabanına bağlanılıyor.
"; $ sql =" çalışandan isim seçin "; print" Çalışan Adı:
"; foreach ($bağ-> sorgusu ($ sql) as $ satır) ($ satır [" isim "] yazdırın."
";) $ conn = null;) catch (PDOException $ err) (echo" Hata: bağlanılamıyor: ". $ err-> getMessage ();)?>

Yukarıda:

  • new PDO - Aşağıdaki üç bağımsız değişkeni alacak yeni bir PDO nesnesi oluşturur:
    1. MySQL bağlantı dizesi: “mysql: host = $ hostname; dbname = $ dbname” biçiminde olacaktır. Yukarıdaki örnekte, DB localhost üzerinde çalışıyor ve biz grayex veritabanına bağlanıyoruz.
    2. MySQL'e bağlanmak için kullanıcı adı.
    3. MySQL kullanıcısının şifresi.
  • $ sql değişkeni - Çalıştırmak istediğiniz SQL sorgusunu oluşturun. Bu örnekte, çalışan tablosundan ad sütununu seçiyoruz.
  • sorgu ($ sql) - burada az önce oluşturduğumuz SQL sorgusunu çalıştırıyoruz.
  • foreach - burada yukarıdaki komutları inceliyoruz ve bunları $ değişken dizgisinde saklıyoruz ve ardından print komutunu kullanarak bunları görüntülüyoruz.
  • MySQL PDO'da bir bağlantıyı kapatmak için $ conn değişkenini sıfıra ayarlamanız yeterlidir.

Tarayıcınızdan mysqli.php'yi çağırdığınızda, PHP'nin MySQL veritabanına bağlanabildiğini ve verileri getirebildiğini gösteren aşağıdaki çıktıyı göreceksiniz.

Veritabanı bağlantısı. Çalışan Adı: slan Maria Oleg web sitesi

3. mysql_ işlevlerini kullanan PHP bağlantısı (kullanımdan kaldırıldı)

Bu yöntemi yalnızca PHP'nin daha eski bir sürümünü kullanıyorsanız ve herhangi bir nedenle daha yeni bir sürüme yükseltemiyorsanız kullanın.

Bu, PHP 5.5 sürümünün kullanımdan kaldırılmış bir uzantısıdır. Ancak PHP 7.0 sürümünden itibaren bu, kaldırıldığı için çalışmayacaktır.

PHP 5.5'ten itibaren, bu işlevleri kullandığınızda, bir E_DEPRECATED hatası üreteceklerdir.

Apache DocumentRoot altında aşağıdaki MySQL-legacy.php dosyasını oluşturun:

"; $ sonuç = mysql_query (" çalışandan isim SEÇ "); $ satır = mysql_fetch_row ($ sonuç); echo" Çalışan 1: ", $ satır,"
\ n "; mysql_close ($bağlan);?>

Yukarıda:

  • mysql_connect işlevi üç argüman alır: 1) MySQL veritabanının çalıştığı ana bilgisayar adı, 2) MySQL'e bağlanmak için kullanıcı adı, 3) MySQL kullanıcısının şifresi. Burada yerel sunucu üzerinde çalışan MySQL veritabanına root kullanıcı adı ve şifresini kullanarak bağlanıyoruz.
  • Mysql_select_db Function - Adından da anlaşılacağı gibi, bağlanmak istediğiniz veritabanını seçecektir. Bu, "use" komutuna eşdeğerdir. Bu örnekte andreyex veritabanına bağlanıyoruz.
  • Mysql_query işlevi - MySQL sorgunuzu belirtmek için bunu kullanın. Bu örnekte, çalışan veritabanından ad sütununu seçiyoruz.
  • mysql_fetch_row - Az önce oluşturduğumuz SQL sorgusundan satırları almak için bu işlevi kullanın.
  • Son olarak yukarıda gösterildiği gibi mysql_close komutunu kullanarak bağlantıyı kapatın.

Tarayıcınızdan MySQL-legacy.php'yi aradığınızda, PHP'nin MySQL veritabanına bağlanabildiğini ve verileri getirebildiğini gösteren aşağıdaki çıktıyı göreceksiniz.

Veritabanı bağlantısı. Çalışan 1: AndreyEx

php ile...

Farklı şekillerde bağlantı oluşturma:

1) MySQL'e bağlanmanın eski moda yolu:

$ conn = mysql_connect ($ db_hostname, $ db_username, $ db_password) or die ("Sunucuya bağlantı yok");
mysql_select_db ($ db_database, $bağ) or die ("Veritabanına bağlanılamadı");

Değişkenlerin açıklamaları aşağıdadır.

Bu durumda, aşağıdaki işlevler kullanılır:

  • mysql_connect ()- sunucuya bağlanmak için;
  • mysql_select_db()- veritabanına bağlanmak için;

Aynı zamanda, sürekli olarak şu şekilde hataları kontrol ederiz: or die ("Böyle bir hata"); - olarak tercüme edilir veya böyle bir hatayla ölür - hatanın nerede olduğunu hemen bulmak için.

config.php

// veritabanına bağlanmak için değişkenler
$ ana bilgisayar = "yerel ana bilgisayar"; / ev sahibi
$ kullanıcı adı = "kök"; // veritabanına bağlanmak için şifre
$şifre = ""; // veritabanına bağlanmak için şifre - yerel bilgisayarda boş olabilir.
$ database_name = "dolgi'm"; // veri tabanı ismi

// veritabanına bağlanmanın eski yolu
mysql_connect ($ host, $ username, $ password) or die ("Bağlantı oluşturmak için bağlanamıyorum");

// veritabanını seç. Hata varsa yazdır
mysql_select_db ($ database_name) veya die (mysql_error());

index.php

require_once "config.php";


$ sonuç = mysql_query ("SELECT Name, Money FROM FROM Money DESC LIMIT 5") veya die (mysql_error ());



";


while ($ satır = mysql_fetch_assoc ($ sonuç)) (
";
}


mysql_free_result ($ sonuç);

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

2) Daha ilerici prosedür stili - mysqli kullanarak veritabanı bağlantısı:

Bu yoldan:

  1. daha uygun;
  2. 40 kata kadar daha hızlı;
  3. yükseltilmiş güvenlik;
  4. yeni özellikler ve işlevler var;

Bir tablodan bir seçimle php'de bir veritabanına bağlanma örneği

config.php

// veritabanına bağlan
$ link = mysqli_connect ("localhost", "kullanıcı adı", "şifre", "ad-veritabanı"); // buraya doğrudan verilerinizi giriyoruz: kullanıcı adı, şifre ve veritabanı adı, ilk alan genellikle localhost

// bağlantı hatasını göster
if (! $ link) (
echo "Veritabanına bağlanma hatası. Hata kodu:". mysqli_connect_error();
çıkış;
}

Dikkat edin - mysqli her yerde kullanılır, mysql değil !!!

index.php

require_once "config.php";

// İsteği yürüt. Bir hata varsa, çıktık
if ($ sonuç = mysqli_query($ bağlantı,"İsim SEÇİN, Dolg'dan Para SİPARİŞİ DESC LIMIT 5")) (

Echo "Kime Düşeyim:

";

// Sorgu sonuçları getiriliyor
while ($ satır = mysqli_fetch_assoc($ sonuç)) (
echo $ satır ["Ad"]. "borçlu". $ satır ["Para"]. "ruble.
";
}

// boş kullanılan bellek
mysqli_free_result($ sonuç);

// Bağlantıyı kapat
mysqli_close($ bağlantı);
}

Gördüğünüz gibi, bazı noktalar değişti (italik olarak).

3) MySQL veritabanına bağlanmanın nesne yönelimli yöntemi - yöntemleri ve sınıfları kullanarak:

Eksileri: Daha sert ve hatalara daha az duyarlı.

Artıları: deneyimli programcılar için kısalık ve rahatlık.

$bağ = yeni mysqli ($ db_hostname, $ db_username, $ db_password, $ db_database);
if ($ conn-> connect_errno) (
die ($ bağlantı-> bağlantı_hatası);
) else (echo "Veritabanı bağlantısı başarıyla kuruldu";)

burada, prensipte, her şey sezgisel olarak açıktır:

  • $ db_hostname ev sahibi(çoğunlukla yerel ana bilgisayar),
  • $ db_database - veritabanı adı;
  • $ db_username ve $ db_password sırasıyla kullanıcı adı ve şifredir!

Bir tablodan bir seçimle php OOP stilinde bir veritabanına bağlanma örneği

config.php

// veritabanına bağlan
$ mysqli = new mysqli ("localhost", "username", "password", "name-veritabanı"); // buraya doğrudan verilerinizi giriyoruz: kullanıcı adı, şifre ve veritabanı adı, ilk alan genellikle localhost

// bağlantı hatasını göster
if ($ mysqli-> connect_error) (
die ("Veritabanına bağlanma hatası: (". $ mysqli-> connect_errno. ")". mysqli_connect_error);
}

Dikkat edin - mysqli her yerde kullanılır, mysql değil !!! ve önceki yöntemin aksine, bunun bir OOP stili olduğunu belirtmek için "->" okları görünür.

index.php

require_once "config.php";

// İsteği yürüt. Bir hata varsa, çıktık
if ($ sonuç = $ mysqli-> sorgu("İsim SEÇİN, Dolg'dan Para SİPARİŞİ TANIM LIMIT 5")) (

Echo "Kime Düşeyim:

";

// Sorgu sonuçları getiriliyor
while ($ satır = $ sonuç-> fetch_assoc()) {
echo $ satır ["Ad"]. "borçlu". $ satır ["Para"]. "ruble.
";
}

// boş kullanılan bellek
$sonuç-> kapat ();

// Bağlantıyı kapat
$mysqli-> kapat();
}

Senin görevin farklılıkları bulmak.

4) PDO kullanarak veritabanı ile iletişim:

MySQL veritabanına bağlanırken (prepar yöntemiyle) hazırlanmış ifadeler kullanılır ve sonuç olarak daha güvenlidir ve performansı büyük ölçüde artırır.

yapılandırma dosyasıönceki yöntemden! - aynı

index.php

// MySQL iletişimi için PDO stili
if ($ stmt = $ mysqli-> hazırla ("İsim SEÇ, Paraya Göre Dolg SİPARİŞİNDEN Voney"< ? LIMIT 5")) {

$ stmt-> bind_param ("i", $ toplam);
$ toplam = 100000;

// yürütmeyi başlat
$ stmt-> yürüt ();

// Hazırlanan değerler için değişken bildirme
$ stmt-> bind_result ($ sütun1, $ sütun2);

Echo "Kime Düşeyim:

";

// Sorgu sonuçları getiriliyor
while ($ stmt-> getir ()) (
yankı $ col1. "borçlu". $ col2. "ruble.
";
}

// boş kullanılan bellek
$ stmt-> kapat();

// Bağlantıyı kapat
$ mysqli-> kapat();

Gördüğünüz gibi, burada çok daha zor ve PDO'yu incelemek gerekiyor - bu ayrı bir konu.