Loading...

Cú pháp chung:

Câu lệnh SQL SELECT được sử dụng để nhận (fetch) dữ liệu từ một table, hoặc nhiều table liên kết, từ cơ sở dữ liệu MySQL . Ta có thể thực hiện lệnh này tại dấu nhắc mysql> hoặc trong các script PHP.

Cú pháp tổng quát nhất của lệnh SELECT:

SELECT field1, field2,...fieldN table_name1, table_name2...

[WHERE Clause] [LIMIT N]

Lưu ý:

Trên đây chỉ liệt các tham số cơ bản nhất của lệnh SELECT. Các tham số đặt trong cặp dấu ngoặc vuông ([, ]) là tùy chọn của lệnh.

Tác dụng của lệnh:

Nhận dữ liệu từ các field: field1, field2,… fieldN trong các table: table_name1, table_name2,… của cơ sở dữ liệu đang mở.

Lệnh chỉ cho nhận ra các record thỏa mãn mệnh đề logic ([Clause]) sau WHERE. Nếu cần nhận ra tất cả record thì không cần sử dụng tham số [WHERE].

Khi cần nhận dữ liệu từ tất cả field của table thì có thể dùng dấu * để thay thế cho các tên field.

Tham số [LIMIT <n>] được sử dụng khi cần lấy ra đủ n record thỏa mãn điều kiện đã chỉ ra.

1. Nhận dữ liệu từ dấu nhắc

Câu lệnh SELECT được sử dụng tại dấu nhắc mysql> như sau:

Ví dụ 1:

root@ubuntu# mysql -u root -p password;

Enter password:*******

mysql> use HSCB;

Database changed

mysql> SELECT * from lylich;

mysql>

Lệnh SELECT này nhận ra tất cả các record, đầy đủ các filed, từ table lylich của cơ sở dữ liệu HSSB.

Ví dụ 2:

root@ubuntu# mysql -u root -p password;

Enter password:*******

mysql> use HSCB;

Database changed

mysql> SELECT * from lylich WHERE NoiSinh = “Hội An”;

mysql>

Nếu chỉ muốn nhận ra các record mà có nơi sinh là “Hoi An” thì câu lệnh SELECT được viết như trên.

2. Nhận dữ liệu từ script PHP

            Trong trường hợp này ta cần phải sử dụng kết hợp cả hai hàm PHP: mysql_query() và mysql_fetch_array().

            Hàm mysql_query() được sử dụng để thực hiện câu lệnh SQL SELECT để nhận dữ liệu mà ta cần.

            Hàm mysql_fetch_array(), được sử dụng ngay sau đó, để nhận tất cả các record mà hàm mysql_query() trả về.  

Cú pháp hàm mysql_fetch_array():

mysql_fetch_array(<result>, [result_type]);

- Result: Tập kết quả, các record, được trả về bởi một trong các hàm mysql_query(), mysql_store_result() or mysql_use_result()

- Result_type: Chỉ ra loại mảng kết quả: MYSQL_ASSOC (mảng kết hợp); MYSQL_NUM (mảng số); MYSQL_BOTH (tự do). Mỗi loại có một cách truy xuất khác nhau đến các phần tử của nó.

            Ví dụ:

$sql = "SELECT Lastname,Age FROM Persons ORDER BY Lastname";

$result = mysql_query($con, $sql)

 

// Mảng số: Dùng chỉ số để truy xuất đến giá trị của các field của record nhận được.

$row = mysql_fetch_array($result, MYSQL_NUM);

printf ("%s (%s)\n", $row[0], $row[1]);

 

// Mảng kết hợp: Dùng tên field để truy xuất đến giá trị của các field của record nhận được.

$row = mysql_fetch_array($result, MYSQL_ASSOC);

printf ("%s (%s)\n", $row["Lastname"], $row["Age"]);

 

// Mảng tự do: Có thể dùng chỉ số học tên field.

$row = mysql_fetch_array($result, MYSQL_BOTH);

printf ("%s (%s)\n", $row[0], $row[1]);

hoặc

printf ("%s (%s)\n", $row["Lastname"], $row["Age"]);

hoặc

mysql_free_result($result);

-----------------------------------

Hàm này nhận một record như là một mảng (cụ thể: nếu nhận được một record thì hàm trả về một mảng một chiều, với số phần tử bằng số field của record nhận được). Có thể là mảng kết hợp hoặc mảng số hoặc mảng tự do. Nếu không nhận được bất kỳ record nào nó sẽ về giá trị Fales (ngược lại là True).

Ví dụ 2:

<?php

$dbhost = 'localhost:3036';

$dbuser = 'root';

$dbpass = 'a123456789z';

$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());

}

// Nhận và in từng record kết quả:

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>";

}

// Kết thúc việc nhận và in từng record kết quả

echo "Fetched data successfully\n";

mysql_close($conn);

?>

---------------------------

Từng record kết quả mà câu lệnh SQL SELRCT ($sql) nhận được sẽ được đưa vào biến mảng row (while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) để rồi sau đó in ra màn hình.

Mảng $row là mảng kết hợp ($row = mysql_fetch_array($retval, MYSQL_ASSOC)) nên ở đây sử dụng tên field để truy xuất đến các phần tử của nó. Trong trường hợp này phải sử dụng cặp dấu nháy đơn để bọc các tên field.

Có thể sử dụng hàm mysql_fetch_assoc() thay thế cho hàm mysql_fetch_array(result, mysql_asoc).

3. Giải phóng bộ nhớ

PHP cung cấp hàm mysql_free_result(result) để giải phóng vùng nhớ (memory) mà chương trình sử dụng để lưu tạm thời <result> trước đó, cụ thể ở đây là biến $retval mà hàm mysql_query($sql, $conn) sử dụng để lưu kết quả có được khi thực hiện câu lệnh truy vấn SELECT.

$retval = mysql_query( $sql, $conn );

….

mysql_free_result($retval);

Ví dụ 2:

<?php

$dbhost = 'localhost:3036';

$dbuser = 'root';

$dbpass = 'a123456789z';

$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>";

}

// Giải phóng bộ nhớ, đóng kết nối và kết thúc

mysql_free_result($retval);                   

echo "Fetched data successfully\n";

mysql_close($conn);

?>

------------------------------

Trong ví dụ này, hàm mysql_fetch_array() được sử dụng với tham số MYSQL_NUM nên kết quả nhận được là mảng số $row, do đó, ở đây phải sử dụng chỉ số để truy xuất đến các phần tử của mảng này.

Tự học

Ý kiến của bạn

Mã bảo vệ
Làm mới

Hãy đăng quảng cáo trên TuHocAnNinhMang.com

Bài xem nhiều nhất

Tự học lập trình C - Bài 1: Một số khái niệm cơ bản

Khái niệm tên rất quan trọng trong quá trình lập trình, ...

MySQL – Bài 8: Khóa chính (primary key) và khóa ngoại (foreign key) của table

Với ràng buộc này thì, việc người sử dụng vô tình hay cố ...

Tự học lập trình C - Bài 10: Mảng một chiều

Mảng 1 chiều là tập hợp các phần tử có cùng kiểu dữ ...

Tự học lập trình JAVA – Bài 1: Bước đầu với Java

Một chương trình java có thể được định nghĩa như là một ...

Tự học lập trình C - Bài 2: Cấu trúc chương trình C

Một chương trình bao gồm một hoặc nhiều hàm, mỗi hàm ...

Tự học lập trình Assembly - Bài 1: Bước đầu với lập trình Assembly trên vi xử lý Intel 8086/8088

Như đã biết, lệnh ngôn ngữ máy là một dãy các con số 0, ...

Hướng dẫn in ấn trong Word 2007/2010 – Step by Step

[Tự học] - Tiêu đề đầu trang (Header)/tiêu đề cuối ...

Hãy đăng quảng cáo trên TuHocAnNinhMang.com

Về đầu trang Hỏi - Đáp