Lấy dữ liệu từ MySQL Database sử dụng PHP



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);
?>
Quảng cáo

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ả.

Quảng cáo

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.

Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.

Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:

Các bạn ở Hà Nội có thể tham gia khóa học thứ 9 của vietjackteam (đang tuyển sinh) vào cuối tháng 10/2018 do anh Nguyễn Thanh Tuyền, admin vietjack.com trực tiếp giảng dạy tại Hà Nội. Chi tiết nội dung khóa học tham khỏa link : Khóa học Java.Các bạn học CNTT, điện tử viễn thông, đa phương tiện, điện-điện tử, toán tin có thể theo học khóa này. Số lượng các công việc Java hoặc .NET luôn gấp ít nhất 3 lần Android hoặc iOS trên thị trường tuyển dụng. Khóa online= Đi phỏng vấn, Khóa offline= Đi phỏng vấn+ 1.5 tháng thực tập ngoài doanh nghiệp.

Mọi người có thể xem demo nội dung khóa học tại địa chỉ Video demo khóa học Offline

Các bạn ở xa học không có điều kiện thời gian có thể tham dự khóa Java online để chủ động cho việc học tập. Từ tháng 4/2018, VietJack khuyến mại giá SỐC chỉ còn 250k cho khóa học, các bạn có thể trả lại tiền nếu không hài lòng về chất lượng trong 1 tháng, liên hệ facebook admin fb.com/tuyen.vietjack để thanh toán chuyển khoản hoặc thẻ điện thoại, khóa học bằng Tiếng Việt với gần 100 video, các bạn có thể chủ động bất cứ lúc nào, và xem mãi mãi. Thông tin khóa học tại Khóa học Java Online trên Udemy

Follow fanpage của team https://www.facebook.com/vietjackteam/ hoặc facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.

Các bài học PHP phổ biến khác tại VietJack:


php_va_mysql.jsp


Tài liệu giáo viên