MySQL - Sorgu Seç

SQL SELECTkomutu, MySQL veritabanından veri almak için kullanılır. Bu komutu mysql> komutunda ve PHP gibi herhangi bir komut dosyasında kullanabilirsiniz.

Sözdizimi

İşte MySQL tablosundan veri almak için SELECT komutunun genel SQL sözdizimi -

SELECT field1, field2,...fieldN 
FROM table_name1, table_name2...
[WHERE Clause]
[OFFSET M ][LIMIT N]
  • WHERE yan tümcesi kullanarak çeşitli koşulları dahil etmek için virgülle ayrılmış bir veya daha fazla tabloyu kullanabilirsiniz, ancak WHERE yan tümcesi SELECT komutunun isteğe bağlı bir parçasıdır.

  • Tek bir SELECT komutuyla bir veya daha fazla alanı getirebilirsiniz.

  • Alanların yerine yıldız (*) belirtebilirsiniz. Bu durumda, SEÇ, tüm alanları döndürür.

  • WHERE yan tümcesini kullanarak herhangi bir koşulu belirtebilirsiniz.

  • Kullanarak bir ofset belirtebilirsiniz OFFSETSELECT'in kayıtları döndürmeye başlayacağı yerden. Varsayılan olarak, uzaklık sıfırdan başlar.

  • Kullanarak iade sayısını sınırlayabilirsiniz. LIMIT öznitelik.

Komut İsteminden Veri Almak

Bu, MySQL tablosundan veri almak için SQL SELECT komutunu kullanacaktır. tutorials_tbl.

Misal

Aşağıdaki örnek, tüm kayıtları döndürür. tutorials_tbl tablo -

root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT * from tutorials_tbl 
+-------------+----------------+-----------------+-----------------+
| tutorial_id | tutorial_title | tutorial_author | submission_date |
+-------------+----------------+-----------------+-----------------+
|           1 | Learn PHP      | John Poul       | 2007-05-21      |
|           2 | Learn MySQL    | Abdul S         | 2007-05-21      |
|           3 | JAVA Tutorial  | Sanjay          | 2007-05-21      |
+-------------+----------------+-----------------+-----------------+
3 rows in set (0.01 sec)

mysql>

PHP Komut Dosyası Kullanarak Verileri Getirme

Aynı SQL SELECT komutunu bir PHP işlevinde kullanabilirsiniz mysql_query(). Bu işlev, SQL komutunu ve daha sonra başka bir PHP işlevini çalıştırmak için kullanılır.mysql_fetch_array()seçilen tüm verileri almak için kullanılabilir. Bu işlev, satırı ilişkilendirilebilir dizi, sayısal dizi veya her ikisi olarak döndürür. Başka satır yoksa bu işlev FALSE döndürür.

Aşağıdaki program, kayıtların nasıl alınacağını / görüntüleneceğini gösteren basit bir örnektir. tutorials_tbl tablo.

Misal

Aşağıdaki kod bloğu, tutorials_tbl tablosundaki tüm kayıtları gösterecektir.

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }
   $sql = 'SELECT tutorial_id, tutorial_title, tutorial_author, submission_date FROM tutorials_tbl';

   mysql_select_db('TUTORIALS');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }
   
   while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
      echo "Tutorial ID :{$row['tutorial_id']}  <br> ".
         "Title: {$row['tutorial_title']} <br> ".
         "Author: {$row['tutorial_author']} <br> ".
         "Submission Date : {$row['submission_date']} <br> ".
         "--------------------------------<br>";
   } 
   echo "Fetched data successfully\n";
   mysql_close($conn);
?>

Satırların içeriği $ satır değişkenine atanır ve bu satırdaki değerler yazdırılır.

NOTE - Bir dizi değerini doğrudan bir dizeye eklemek istediğinizde her zaman küme parantezleri koymayı unutmayın.

Yukarıdaki örnekte, sabit MYSQL_ASSOC PHP işlevinin ikinci bağımsız değişkeni olarak kullanılır mysql_fetch_array(), böylece satırı ilişkilendirilebilir bir dizi olarak döndürür. İlişkilendirilebilir bir dizi ile, indeksi kullanmak yerine ismini kullanarak alana erişebilirsiniz.

PHP, mysql_fetch_assoc(), ayrıca satırı ilişkilendirilebilir bir dizi olarak döndürür.

Misal

Mysql_fetch_assoc () işlevini kullanarak tutorial_tbl tablosundaki tüm kayıtları görüntülemek için aşağıdaki örnek.

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }
   
   $sql = 'SELECT tutorial_id, tutorial_title, tutorial_author, submission_date
      FROM tutorials_tbl';

   mysql_select_db('TUTORIALS');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }
   
   while($row = mysql_fetch_assoc($retval)) {
      echo "Tutorial ID :{$row['tutorial_id']}  <br> ".
         "Title: {$row['tutorial_title']} <br> ".
         "Author: {$row['tutorial_author']} <br> ".
         "Submission Date : {$row['submission_date']} <br> ".
         "--------------------------------<br>";
   } 
   echo "Fetched data successfully\n";
   mysql_close($conn);
?>

Ayrıca sabiti de kullanabilirsiniz. MYSQL_NUMPHP işlevinin ikinci argümanı olarak mysql_fetch_array (). Bu, işlevin sayısal indeksi olan bir dizi döndürmesine neden olur.

Misal

MYSQL_NUM bağımsız değişkenini kullanarak tutorials_tbl tablosundaki tüm kayıtları görüntülemek için aşağıdaki örneği deneyin.

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);

   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }
   
   $sql = 'SELECT tutorial_id, tutorial_title, tutorial_author, submission_date
      FROM tutorials_tbl';

   mysql_select_db('TUTORIALS');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }
   
   while($row = mysql_fetch_array($retval, MYSQL_NUM)) {
      echo "Tutorial ID :{$row[0]}  <br> ".
         "Title: {$row[1]} <br> ".
         "Author: {$row[2]} <br> ".
         "Submission Date : {$row[3]} <br> ".
         "--------------------------------<br>";
   }
   echo "Fetched data successfully\n";
   mysql_close($conn);
?>

Yukarıdaki üç örneğin tümü aynı sonucu verecektir.

Belleği Serbest Bırakma

İmleç belleğini her SELECT ifadesinin sonunda serbest bırakmak iyi bir uygulamadır. Bu, PHP işlevi kullanılarak yapılabilirmysql_free_result(). Aşağıdaki program nasıl kullanılması gerektiğini gösteren örnektir.

Misal

Aşağıdaki örneği deneyin -

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);

   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }
   
   $sql = 'SELECT tutorial_id, tutorial_title, tutorial_author, submission_date
      FROM tutorials_tbl';

   mysql_select_db('TUTORIALS');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }
   
   while($row = mysql_fetch_array($retval, MYSQL_NUM)) {
      echo "Tutorial ID :{$row[0]}  <br> ".
         "Title: {$row[1]} <br> ".
         "Author: {$row[2]} <br> ".
         "Submission Date : {$row[3]} <br> ".
         "--------------------------------<br>";
   }
   mysql_free_result($retval);
   echo "Fetched data successfully\n";
   mysql_close($conn);
?>

Verileri alırken istediğiniz kadar karmaşık bir kod yazabilirsiniz, ancak prosedür yukarıda belirtildiği gibi kalacaktır.