Hướng dẫn dùng as result trong PHP

Dưới đây là danh sách các hàm thao tác trên dữ liệu (data) phổ biến:

Nội dung chính

  • mysql_query()
  • mysql_db_query()
  • mysql_insert_id()
  • mysql_fetch_row()
  • mysql_fetch_array()
  • mysql_fetch_object()
  • mysql_fetch_assoc()
  • mysql_data_seek()
  • mysql_num_rows()
  • mysql_affected_rows()
  • mysql_result()
  • mysql_free_result()
  • mysql_tablename()
  • mysql_field_name()
  • mysql_list_dbs()
  • mysql_list_tables()
  • mysql_list_fields()
  • mysql_num_fields()
  • mysql_num_rows()
  • mysql_field_type()
  • mysql_field_len()
  • mysql_fetch_lengths()
  • mysql_errno()
  • mysql_fetch_field()

Nội dung chính

  • mysql_query()
  • mysql_db_query()
  • mysql_insert_id()
  • mysql_fetch_row()
  • mysql_fetch_array()
  • mysql_fetch_object()
  • mysql_fetch_assoc()
  • mysql_data_seek()
  • mysql_num_rows()
  • mysql_affected_rows()
  • mysql_result()
  • mysql_free_result()
  • mysql_tablename()
  • mysql_field_name()
  • mysql_list_dbs()
  • mysql_list_tables()
  • mysql_list_fields()
  • mysql_num_fields()
  • mysql_num_rows()
  • mysql_field_type()
  • mysql_field_len()
  • mysql_fetch_lengths()
  • mysql_errno()
  • mysql_fetch_field()

mysql_query()

Hàm gửi câu lệnh SQL tới máy chủ MySQL.

Cú pháp:

int mysql_query(string query, [int link_identifier]);

Trong đó:

- query: Câu lệnh SQL cần gửi tới máy chủ MySQL.

- link_identifier: Mã số nhận dạng, nó phải được thực hiện trong hàm mysql_select_db() trước đó.

mysql_db_query()

Hàm gửi câu lệnh SQL tới máy chủ MySQL.

Cú pháp:

int mysql_db_query(string database, string query, int [link_identifier]);

Trong đó:

- database: Tên cơ sở dữ liệu câu lệnh SQL sẽ thực hiện trên đó.

- query: Câu lệnh SQL cần thực hiện.

- link_identifier: Mã số nhận dạng được cấp bởi hàm mysql_connect(). Hàm này chỉ rõ câu lệnh được thực hiện trên cơ sở dữ liệu nào nên trước đó không cần thực hiện hàm mysql_select_db();

mysql_insert_id()

Hàm lấy giá trị được sinh ra từ câu truy vấn INSERT trước.

int mysql_insert_id(int [link_identifier]);

, trong đó link_identifier là mã số nhận dạng được cấp bởi hàm mysql_connect(). Hàm này trả về giá trị id được sinh ra trong cột AUTO_INCREMENT bởi câu truy vấn trước đó. Điều này chỉ có tác dụng trên link_identifier được chỉ ra trong hàm, nếu gọi hàm trên mà không chỉ định tham số link_identifier thì liên kết được mở cuối cùng sẽ được chỉ định. Hàm mysql_insert_id() trả về giá trị 0 nếu câu truy vấn trước đó không sinh ra một giá trị AUTO_INCREMENT. Nếu ta muốn giữ lại giá trị cho lần sau, thì phải gọi hàm này ngay sau câu truy vấn sinh ra giá trị.

mysql_fetch_row()

Hàm trả về một mảng là giá trị của một bảng ghi hiện tại với chỉ số là số thứ tự của các trường (chỉ số bắt đầu từ 0). Sau đó hàm sẽ trỏ tới bảng ghi tiếp theo cho tới khi gặp bảng ghi cuối cùng hàm trả về giá trị false. Để truy xuất tới các giá trị của cột ta viết: tên_mảng[số thứ tự].

Cú pháp:

array mysql_fetch_row(int result_identifier);

, trong đó result_identifier là mã số trả về của hàm mysql_query() hoặc mysql_db_query().

Ví dụ:

$mysql = "select id, name from ds_thanhvien"; //câu lệnh SQL

$link = mysql_connect($host, $user, $password); //lấy mã

mysql_select_db( $database_name, $link);

$result = mysql_query($mysql, $link);

while ($row = mysql_fetch_row($result)){

echo $row[0];

echo $row[1];

}

?>

mysql_fetch_array()

Hàm trả về một mảng là giá trị của một bảng ghi hiện tại, sau đó hàm sẽ trỏ tới bảng ghi tiếp theo cho tới khi gặp bảng ghi cuối cùng hàm trả về giá trị false.

Cú pháp:

array mysql_fetch_array( int result_identifier [, int result_type]);

, trong đó result_identifier là mã số trả về của hàm mysql_query() hoặc mysql_db_query().

Để truy xuất đến các thành phần của cột: tên_biến_mảng["tên_trường"];

result_type là một hằng số có thể nhận các giá trị sau:

- MYSQL_NUM: chỉ trả lại một mảng chứa các chỉ số là số (giống như hàm mysql_fetch_row()).

- MYSQL_ASSOC: chỉ trả lại một mảng liên kết.

- MYSQL_BOTH: trả lại mảng chứa đựng các chỉ số gồm cả các con số và chỉ số liên kết.

Hàm này là sự mở rộng của hàm mysql_fetch_row(). Nó cho phép truy cập trường dữ liệu của mảng kết quả không chỉ thông qua các chỉ số là các số mà chúng có thể là tên của các trường dữ liệu. Điều này làm cho việc lập trình đơn giản và chính xác hơn.

Ví dụ:

$mysql = “select id, name from ds_thanhvien”;

$link = mysql_connect($host, $user, $password);

$result = mysql_db_query(“php”, $mysql);

while ($row = mysql_fetch_array($result)){

echo “user_id: “. $row[“id”].”
\n”;

echo “user_id: “. $row[0].”
\n”;

echo “user_name: “. $row[“name”].”
\n”;

echo “user_name: “. $row[1].”
\n”;

}

mysql_free_result ($result);

?>

mysql_fetch_object()

Hàm trả về một đối tượng là giá trị của một bảng ghi hiện thời. Sau đó hàm sẽ trỏ tới bảng ghi tiếp theo cho tới khi gặp bảng ghi cuối cùng hàm trả về giá trị false. Để truy xuất tới các giá trị của cột ta viết tên_object->tên_cột.

Cú pháp:

object mysql_fetch_object(int result_identifier);

, trong đó result_identifier là mã số trả về của hàm mysql_query() hoặc mysql_db_query().

Ví dụ:

$mysql = “select id, name from ds_thanhvien”;

$link = mysql_connect($host, $user, $password);

$result = mysql_db_query(“php”, $mysql);

while ($row = mysql_fetch_object($result)){

echo $row->id;

echo $row->name;

}

?>

mysql_fetch_assoc()

Hàm lấy về một dòng kết quả như là một mảng liên kết.

Cú pháp:

array mysql_fetch_assoc(int result_identifier);

, trong đó result_identifier là mã số trả về của hàm mysql_query() hoặc mysql_db_query().

Hàm trả về một mảng tương ứng với một bản ghi được lấy về và trả lại FALSE nếu không có bản ghi nào. Hàm này tương đương với hàm array mysql_fetch_array() với tham số result_type là: MYSQL_ASSOC.

Ví dụ:

$mysql = “select id, name from ds_thanhvien”;

$link = mysql_connect($host, $user, $password);

$result = mysql_db_query(“php”, $mysql);

while ($row = mysql_fetch_assoc($result)){

echo $row[“id”];

echo $row[“name”];

}

?>

mysql_data_seek()

Di chuyển con trỏ bên trong “tập kết quả” (có được sau khi câu truy vấn SELECT được thực hiện).

Cú pháp:

bool mysql_data_seek(int result_identifier, int row_number);

, trong đó result_identifier là mã số trả về của hàm mysql_query(), mysql_db_query(), mysql_list_tables(), mysql_list_dbs(), row_number là chỉ số của bản ghi mà cần đặt con trỏ vào.

Hàm trả về true nếu thành công, false nếu lỗi.

Hàm này sẽ di chuyển con trỏ bên trong “tập kết quả” (được chỉ rõ bởi tham đối result_identifier ) đến dòng có mã bằng tham đối row_number. Các dòng trong tập kết quả được bắt đầu từ 0.

Ví dụ:

$link = mysql_pconnect ($host, $user, $password) or die ("Could not connect”);

$query = “SELECT last_name, first_name FROM friends”;

$result = mysql_db_query (“php”,$query) or die ("Query failedã);

# fetch rows in reverse order

for($i = mysql_num_rows ($result) - 1; $i >=0; $i--){

if (!Mysql_data_seek ($result, $i)){

printf ("Cannot seek to row %d\n”, $i);

continue;

}

if(!($row = mysql_fetch_object ($result)))

continue;

printf ("%s %s
\n”, $row->last_name, $row->first_name);

}

mysql_free_result ($result);

?>

mysql_num_rows()

Trả lại số dòng trong result_identifier (nơi chứa kết quả của câu lệnh SQL đã được thực hiện).

Cú pháp:

mysql_num_rows(int result_identifier);

, trong đó result_identifier là mã số trả về của hàm mysql_query(), mysql_db_query(), mysql_list_tables(), mysql_list_dbs().

mysql_affected_rows()

Cú pháp:

int mysql_affected_rows(int [link_identifier]);

, trong đó link_identifier là mã số nhận dạng, nó phải được thực hiện trong hàm mysql_select_db() trước đó.

Hàm trả về số dòng đã bị tác động bởi một câu truy vấn SQL:INSERT, UPDATE, DELETE trước đó theo tham số link_identifier. Nếu link_identifier không được chỉ định thì mã kết nối trước đó sẽ được chỉ định.

Chú ý:

- Nếu câu lệnh SQL trước đó là DELETE mà không có mệnh đề WHERE thì toàn bộ các bản ghi trong bảng đã bị xoá nhưng hàm mysql_affected_rows() sẽ trả về gián trị 0.

-Hàm này không có tác dụng đối với câu lệnh truy vấn SELECT. Để lấy được số dòng trả về (số dòng đã bị tác động) bởi câu lệnh SELECT ta dùng hàm mysql_num_rows().

mysql_result()

Hàm này dùng để lấy dữ liệu từ result_identifier.

Cú pháp:

mixed mysql_result(int result_identifier, int row, mixed [field]);

, trong đó result_identifier là mã số trả về của hàm mysql_query(), mysql_db_query(), mysql_list_tables(), mysql_list_dbs(), row là bản ghi mà ta sẽ lấy dữ liệu, field là trường trong dòng row mà ta sẽ lấy dữ liệu.

Các tham số result_identifier và row phải có, còn tham field là tùy chọn. Hàm sẽ trả lại các nội dung của dòng row và cột field từ tập kết quả được chỉ định bởi biến result_identifier. Nếu đối số field không được chỉ định rõ thì trường tiếp theo của bản ghi sẽ được trả về.

Ví dụ:

$mysql = “select id, name from ds_thanhvien”;

$link = mysql_connect($host, $user, $password);

$result = mysql_db_query( php, $mysql);

echo “ mysql_result($result, 0, “id”)
\n”;

echo “ mysql_result($result, 0, “name”)
\n”;

?>

mysql_free_result()

Hàm giải phóng vùng bộ nhớ được liên kết với result_identifier.

Cú pháp:

mysql_free_result(int result_identifier);

, trong đó result_identifier là mã số trả về của hàm mysql_query(), mysql_db_query(), mysql_list_tables(), mysql_list_dbs().

Hàm này chỉ được dùng nếu như bạn đánh giá thấy rằng kịch bản của bạn sử dụng quá nhiều bộ nhớ khi đang chạy. Gọi hàm này trên một trình xử lý kết quả sẽ giải phóng toàn bộ dữ liệu liên kết trong bộ nhớ.

mysql_tablename()

Cú pháp:

mysql_tablename(int result_identifier, int i);

Hàm trả lại tên của bảng/csdl tại chỉ số i trong result_identifier.

mysql_field_name()

Cú pháp:

mysql_field_name(int result_identifier, int field_index);

Hàm trả lại tên của trường tại vị trí field_index trong mã result_identifier.

mysql_list_dbs()

Cú pháp:

mysql_list_dbs([int link_identifier]);

Hàm trả lại một result_identifier là danh sách biến CSDL trên MySQL Server nếu thành công, lỗi trả về false.

mysql_list_tables()

Cú pháp:

mysql_list_tables(string database [, int link_identifier]);

Hàm trả về danh sách tất cả câc bảng trong một CSDL MySQL, thành công trả về một result identifier, giá trị false nếu có lỗi.

mysql_list_fields()

Cú pháp:

mysql_list_fields(string database_name, string table_name [, int link_identifier]);

Hàm trả về thông tin liên quan đến một bảng dữ liệu.

mysql_num_fields()

Cú pháp:

mysql_num_fields(int result_identifier);

Hàm trả về số trường trong tập kết quả.

mysql_num_rows()

Cú pháp:

mysql_num_rows(int result_identifier);

Trả về số bản ghi trong tập kết quả, hàm này chỉ có giá đối với các câu lệnh SELECT, để lấy lại số bản ghi được trả lại từ các lệnh: INSERT, UPDATE hoặc DELETE, dùng mysql_affected_rows().

mysql_field_type()

Cú pháp:

mysql_field_type(int result_identifier, int field_index);

Hàm trả về kiểu dữ liệu của trường tại vị trí field_index trong mã result_identifier.

mysql_field_len()

Cú pháp:

mysql_field_len(int result_identifier, int field_offset);

Hàm trả về độ dài của trường được chỉ định thông qua tham số field_offset.

mysql_fetch_lengths()

Cú pháp:

mysql_fetch_lengths(int result_identifier);

Hàm trả về một mảng tương ứng với các độ dài của mỗi trường trong bản ghi được lấy về bởi hàm mysql_fetch_row() hoặc false nếu có lỗi.

mysql_errno()

Cú pháp:

mysql_errno([int link_identifier]);

Hàm trả về mã lỗi từ hàm thao tác CSDL MySQL trước, trả về giá trị 0 nếu không có lỗi.

mysql_error()

Cú pháp:

mysql_error([int link_identifier]);

Hàm trả về xâu thông báo lỗi từ hàm thao tác CSDL MySQL trước, trả về xâu rỗng nếu không có lỗi.

mysql_fetch_field()

Cú pháp:

mysql_fetch_field(int result_identifier [, int field_offset]);

Hàm dùng để lấy thông tin về trường từ tập kết quả rồi trả lại như một đối tượng.