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.