前面幾節(jié)講解了如何利用 SQL 的 SELECT 命令來獲取 MySQL 表中的數(shù)據(jù),以及如何利用 WHERE 子句這種條件子句來選擇所需的記錄。
當(dāng)我們需要進(jìn)行精確匹配時(shí),可以在WHERE子句中加入等號(hào)(=),就像是 if tutorial_author = 'Sanjay' 這種 if 條件語句一樣。但有時(shí)我們會(huì)想在所有的結(jié)果中過濾 tutorial_author 字段包含 "jay" 字符的結(jié)果。這時(shí)就應(yīng)該利用 SQL 的 LIKE 子句搭配 WHERE 子句來解決。
如果 SQL 的 LIKE 子句帶有 % 字符,則相當(dāng)于 UNIX 中的元字符(*),在命令行中列出所有的文件或目錄。
如果 LIKE 子句不帶 % 字符,則就相當(dāng)于 WHERE 子句中帶有等號(hào)的情況。
使用 SQL 的 SELECT 命令,并配合 LIKE 子句,從 MySQL 表中獲取數(shù)據(jù)的一般語法格式如下所示:
SELECT field1, field2,...fieldN table_name1, table_name2...
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
%)時(shí),會(huì)按照元字符搜索那樣執(zhí)行。 我們將使用 SQL 的SELECT 命令搭配WHERE...LIKE 子句組合,從 MySQL 的表 tutorials_tbl 中獲取選定數(shù)據(jù)。
下面這個(gè)范例將返回表 tutorials_tbl 中作者名結(jié)尾帶有 jay 的所有記錄。
root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT * from tutorials_tbl
-> WHERE tutorial_author LIKE '%jay';
+-------------+----------------+-----------------+-----------------+
| tutorial_id | tutorial_title | tutorial_author | submission_date |
+-------------+----------------+-----------------+-----------------+
| 3 | JAVA Tutorial | Sanjay | 2007-05-21 |
+-------------+----------------+-----------------+-----------------+
1 rows in set (0.01 sec)
mysql>
在利用PHP 的 mysql_query() 函數(shù)過程中,我們可以照常使用 WHERE...LIKE 子句組合的語法。如果 WHERE...LIKE 子句組合和 SELECT 命令一起使用,那么先利用 mysql_query() 函數(shù)執(zhí)行相關(guān)的 SQL 命令,然后再用另一個(gè) PHP 函數(shù) mysql_fetch_array() 獲取所有的數(shù)據(jù)。
但如果 WHERE...LIKE 子句組合是和 DELETE 或 UPDATE 命令一起使用的話,就不需要再調(diào)用 PHP 函數(shù)了。
下面這個(gè)范例將返回表 tutorials_tbl 中所有作者名包含 jay 的記錄。
<?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
WHERE tutorial_author LIKE "%jay%"';
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);
?>