Lấy dữ liệu từ MySQL Database sử dụng PHP
Đánh giá bài viết

Dữ liệu có thể được lấy từ MySQL Tables bởi thực thi lệnh SQL SELECT qua hàm mysql_query trong PHP. Bạn có một vài tùy chọn để lấy dữ liệu từ MySQL.

Tùy chọn được sử dụng phổ biến nhất là sử dụng hàm mysql_fetch_array() trong PHP. Hàm này trả về hàng (row) ở dạng như một mảng liên hợp, một mảng số, hoặc cả hai. Hàm này trả về FALSE nếu không có hàng nào.

Dưới đây là ví dụ đơn giản để truy xuất record từ Table có tên là employee.

Ví dụ

Bạn thử ví dụ sau để hiển thị tất cả record từ Table có tên là employee.

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'tennguoidung';
   $dbpass = 'matkhau';
   
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn )
   {
      die('Không thể kết nối: ' . mysql_error());
   }
   
   $sql = 'SELECT emp_id, emp_name, emp_salary FROM employee';
   mysql_select_db('test_db');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval )
   {
      die('Không thể lấy dữ liệu: ' . mysql_error());
   }
   
   while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
   {
      echo "ID :{$row['emp_id']}  <br> ".
         "Tên nhân viên : {$row['emp_name']} <br> ".
         "Lương : {$row['emp_salary']} <br> ".
         "--------------------------------<br>";
   }
   
   echo "Lấy dữ liệu thành công\n";
   
   mysql_close($conn);
?>

Nội dung của các row được gán cho biến $row và sau đó các giá trị trong row được in.

Ghi chú − Luôn luôn ghi nhớ để đặt các dấu ngoặc móc khi bạn muốn chèn một giá trị mảng trực tiếp vào một chuỗi.

Trong ví dụ trên, hằng MYSQL_ASSOC được sử dụng như là tham số thứ hai cho hàm mysql_fetch_array(), để mà nó trả về row ở dạng như một mảng liên hợp. Với một mảng liên hợp, bạn có thể truy cập Field bởi sử dụng tên của chúng thay vì sử dụng chỉ mục.

PHP cung cấp một hàm khác là mysql_fetch_assoc() mà cũng trả về row ở dạng như một mảng liên hợp.

Ví dụ

Bạn thử ví dụ sau để hiển thị tất cả record từ Table có tên là employee bởi sử dụng hàm mysql_fetch_assoc() trong PHP.

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'tennguoidung';
   $dbpass = 'matkhau';
   
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn )
   {
      die('Không thể kết nối: ' . mysql_error());
   }
   
   $sql = 'SELECT emp_id, emp_name, emp_salary FROM employee';
   mysql_select_db('test_db');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval )
   {
      die('Không thể lấy dữ liệu: ' . mysql_error());
   }
   
   while($row = mysql_fetch_assoc($retval))
   {
      echo "ID :{$row['emp_id']}  <br> ".
         "Tên nhân viên : {$row['emp_name']} <br> ".
         "Lương : {$row['emp_salary']} <br> ".
         "--------------------------------<br>";
   }
   
   echo "Lấy dữ liệu thành công\n";
   
   mysql_close($conn);
?>

Bạn cũng có thể sử dụng hằng MYSQL_NUM, như là tham số thứ hai cho hàm mysql_fetch_array(). Việc này làm cho hàm đó trả về một mảng với chỉ mục dạng số.

Ví dụ

Bạn thử ví dụ sau để hiển thị tất cả record từ Table có tên là employee bởi sử dụng tham số MYSQL_NUM trong PHP.

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'tennguoidung';
   $dbpass = 'matkhau';
   
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn )
   {
      die('Không thể kết nối: ' . mysql_error());
   }
   
   $sql = 'SELECT emp_id, emp_name, emp_salary FROM employee';
   mysql_select_db('test_db');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval )
   {
      die('Không thể lấy dữ liệu: ' . mysql_error());
   }
   
   while($row = mysql_fetch_array($retval, MYSQL_NUM))
   {
      echo "ID :{$row[0]}  <br> ".
         "Tên nhân viên : {$row[1]} <br> ".
         "Lương : {$row[2]} <br> ".
         "--------------------------------<br>";
   }
   
   echo "Lấy dữ liệu thành công\n";
   
   mysql_close($conn);
?>

Ba ví dụ trên sẽ cho cùng kết quả.

Giải phóng bộ nhớ sử dụng PHP

Giải phóng bộ nhớ ở cuối mỗi lệnh SELECT là một bài thực hành tốt cho bạn. Điều này có thể được thực hiện bởi sử dụng hàm mysql_free_result() trong PHP. Dưới đây là ví dụ minh họa cách hàm này được sử dụng.

Ví dụ

Bạn thử ví dụ sau:

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'tennguoidung';
   $dbpass = 'matkhau';
   
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn )
   {
      die('Không thể kết nối: ' . mysql_error());
   }
   
   $sql = 'SELECT emp_id, emp_name, emp_salary FROM employee';
   mysql_select_db('test_db');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval )
   {
      die('Không thể lấy dữ liệu: ' . mysql_error());
   }
   
   while($row = mysql_fetch_array($retval, MYSQL_NUM))
   {
      echo "ID :{$row[0]}  <br> ".
         "Tên nhân viên : {$row[1]} <br> ".
         "Lương : {$row[2]} <br> ".
         "--------------------------------<br>";
   }
   
   mysql_free_result($retval);
   echo "Lấy dữ liệu thành công\n";
   
   mysql_close($conn);
?>

Trong khi lấy dữ liệu, dù bạn viết SQL phức tạp thế nào, thì thủ tục vẫn như trên.