SQL SELECT 命令用于从MySQL数据库中获取数据.你可以在mysql>上使用这个命令.提示以及任何脚本,如PHP.
这是SELECT命令的通用SQL语法,用于从MySQL表中获取数据 :
SELECT field1, field2,...fieldN FROM table_name1, table_name2... [WHERE Clause] [OFFSET M ][LIMIT N]
您可以使用一个或多个用逗号分隔的表包含使用WHERE子句的各种条件,但WHERE子句是SELECT命令的可选部分.
您可以获取一个或多个单个SELECT命令中的字段.
您可以指定星号(*)代替字段.在这种情况下,SELECT将返回所有字段.
您可以使用WHERE子句指定任何条件.
您可以使用 OFFSET 指定偏移量,SELECT将从此处开始返回记录.默认情况下,偏移量从零开始.
您可以使用 LIMIT 属性限制退货次数.
这将使用SQL SELECT命令从MySQL表中获取数据 tutorials_tbl .
以下示例将返回 tutorials_tbl 表中的所有记录 :
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函数中使用相同的SQL SELECT命令的mysql_query()的.此函数用于执行SQL命令,然后可以使用另一个PHP函数 mysql_fetch_array()来获取所有选定的数据.此函数将行作为关联数组,数字数组或两者返回.如果没有更多行,则此函数返回FALSE.
以下程序是一个简单示例,它将显示如何从 tutorials_tbl 表中获取/显示记录.
以下代码块将显示tutorials_tbl表中的所有记录.
<?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); ?>
行的内容被分配给变量$ row,然后打印该行中的值.
注意 : 当你想直接将一个数组值插入一个字符串时,总是记得放置大括号.
在上面的例子中,常量 MYSQL_ASSOC 用作第二个PHP函数 mysql_fetch_array()的参数,以便它将该行作为关联数组返回.使用关联数组,您可以使用其名称而不是使用索引来访问该字段.
PHP提供另一个名为 mysql_fetch_assoc()的函数,该函数也返回row作为关联数组.
以下示例使用mysql_fetch_assoc()函数显示tutorial_tbl表中的所有记录.
<?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); ?>
您还可以使用常量 MYSQL_NUM 作为PHP函数mysql_fetch_array()的第二个参数.这将导致函数返回带有数字索引的数组.
尝试以下示例以显示tutorials_tbl表中的所有记录使用MYSQL_NUM参数.
<?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); ?>
以上三个例子都会产生相同的结果.
最好在每个SELECT语句的末尾释放游标内存.这可以通过使用PHP函数 mysql_free_result()来完成.以下程序是显示如何使用它的示例.
尝试以下示例 :
<?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); ?>
在获取数据时,您可以根据需要编写复杂的代码,但程序将保持与上述相同.