Bài 4. LẬP TRÌNH WEB ĐỘNG VỚI PHP
4.3. THAO TÁC VỚI CƠ SỞ DỮ LIỆU (MYSQL)
*) Kết nối cơ sở dữ liệu MySQL
Để có thể truy cập và làm việc với cơ sở dữ liệu, bạn phải tạo một kết nối đến cơ sở dữ liệu, sử dụng hàm:
mysql_connect(servername, username, password)
Hàm này trả về kết nối nếu thành công, hay trả về false nếu kết nối lỗi servername: tên server cơ sở dữ liệu.
username, password: tên đăng nhập và password truy cập cơ sở dữ liệu Đóng kết nối cơ sở dữ liệu
mysql_close([ConnectName])
Hàm này đóng kết nối MySQL, nếu không chỉ rõ kết nối, sẽ đóng kết nối sau cùng. Hàm trả về true nếu thành công, trả về false nếu lỗi
Ví dụ:
<?php
$con = mysql_connect("localhost","","");
if (!$con)
exit(“Could not connect: “ . mysql_error()); //In thông báo và thoát script //die(“Could not connect: “ . mysql_error());
mysql_close($con);
?>
4.3.2. Truy xuất dữ liệu
Mở cơ sở dữ liệu MySQL và thực hiện câu lệnh SQL
mysql_select_db (DatabaseName[, ConnectName])
Hàm này để mở cơ sở dữ liệu MySQL, trả về true nếu thành công, hay false nếu lỗi
mysql_query (SQLStatement[, ConnectName])
Hàm này thực hiện câu lệnh SQL trên cơ sở dữ liệu MySQL, nếu là lệnh truy vấn select thì trả về tập các bản ghi truy vấn được RecordSet hay false nếu lỗi. Ngoài các lệnh truy vấn select, các lệnh SQL khác để tạo bảng, sửa bảng, xoá bảng và cập nhật dữ liệu như create table, insert, update, delete…, thực hiện các lệnh này khác lệnh select là không trả về kết quả RecordSet, mà trả về true nếu thành công, hay false nếu lỗi
mysql_free_result(RecordSet)
Hàm này giải phóng bộ nhớ sử dụng bởi RecordSet, trả về true nếu thành công, false nếu hỏng. PHP tự động đóng RecordSet khi kết thúc Script, tuy nhiên bạn có thể sử dụng hàm này để đóng RecordSet và thực hiện một lệnh SQL khác
72
Các phiên bản trước sử dụng hàm sau để mở cơ sở dữ liệu và thực hiện câu lệnh SQL thay cho hai hàm trên
mysql_db_query(DatabaseName, SQLStatement, ConnectName);
ü Truy vấn dữ liệu (Select)
mysql_affected_rows([ConnectName])
Hàm này trả về số bản ghi của hoạt động thực hiện lệnh SQL sau cùng, hay -1 nếu hoạt động này hỏng, nếu không chỉ rõ ConnectName, thì kết nối sau cùng được sử dụng
mysql_num_rows(RecordSet)
Hàm này trả về số bản ghi của RecordSet, hay trả về false nếu lỗi mysql_fetch_row(RecordSet)
Hàm này trả về một bản ghi từ RecordSet như là một mảng, hay False nếu RecordSet không có bản ghi, và di chuyển đến bản ghi kế tiếp trong RecordSet. Mỗi bản ghi trả về là một mảng với chỉ mục là số thứ tự trường, trường đầu tiên có số thứ tự là 0
mysql_fetch_array(RecordSet)
Hàm này trả về một bản ghi từ RecordSet như là một mảng, hay False nếu RecordSet không có bản ghi, và di chuyển đến bản ghi kế tiếp trong RecordSet. Mỗi bản ghi trả về là một mảng với chỉ mục là tên trường hay số thứ tự trường, trường đầu tiên có số thứ tự là 0
mysql_fetch_object(RecordSet)
Hàm này trả về một bản ghi từ RecordSet như là một đối tượng, hay False nếu RecordSet không có bản ghi, và di chuyển đến bản ghi kế tiếp trong RecordSet.
Ví dụ 1:
<?php
header('Content-Type: text/html; charset=windows-1258');
$con = mysql_connect("localhost", "", "");
if (! $con)
exit(“Could not connect: “ . mysql_error()); //In thông báo và thoát script
$sql = "select * from mathang";
mysql_select_db ("banhang", $con);
$rs = mysql_query ($sql);
?>
<html><body><table border=1>
<tr><td><b>Ma hang</b></td>
<td><b>Tenhang</b></td></tr>
<?php
while ($row = mysql_fetch_array($rs)) { //while ($row = mysql_fetch_row($rs)) {
$mahang=$row ["mahang"]; //$mahang=$row [0];
$tenhang=$row ["tenhang"]; //$tenhang=$row [1];
echo "<tr><td>$mahang</td>";
echo "<td>$tenhang</td></tr>";
}
73 mysql_close($con);
?>
</table>
</body></html>
Ví dụ 2:
<?php
header('Content-Type: text/html; charset=windows-1258');
$con = mysql_connect("localhost", "", "");
if (! $con)
die('Could not connect: ' . mysql_error());
$sql = "select * from mathang";
mysql_select_db ("banhang", $con);
$rs = mysql_query ($sql);
?>
<html><body>
<table border=1>
<tr><td><b>Ma hang</b></td>
<td><b>Tenhang</b></td></tr>
<?php
while ($row = mysql_fetch_object($rs)){
$mahang = $row->mahang;
$tenhang = $row->tenhang;
echo "<tr><td>$mahang</td>";
echo "<td>$tenhang</td></tr>";
}
mysql_close($con);
?>
</table>
</body></html>
4.3.3. Thêm mới dữ liệu Ví dụ:
<?php
$con = mysql_connect("localhost", "", "") if (! $con)
die('Could not connect: ' . mysql_error());
mysql_select_db ("banhang", $con);
$sql = "INSERT INTO mathang(tenhang, maloai) VALUES('Ao dai','1')";
$rs = mysql_query($sql);
if (! $rs)
die('Loi them ban ghi: ' . mysql_error());
74 echo "Mã hàng: " . mysql_insert_id();
mysql_close($con);
?>
Hàm mysql_insert_id() trả về giá trị của trường tự động tăng dần phát sinh từ hoạt động insert sau cùng, trả về 0 nếu hoạt động insert không phát sinh giá trị trường tăng dần, hay false nếu hoạt động insert lỗi
4.3.3. Sửa, xoá dữ liệu
*) Sửa dữ liệu Ví dụ:
<?php
$con = mysql_connect("localhost","","");
if (!$con)
exit('Could not connect: ' . mysql_error());
mysql_select_db("banhang", $con);
mysql_query("update mathang set tenhang = 'Ao thun' where mahang = 1");
mysql_close($con);
?>
*) Xoá dữ liệu
<?php
$con = mysql_connect("localhost","","");
if (!$con)
die('Could not connect: ' . mysql_error());
mysql_select_db("banhang");
mysql_query("delete from mathang where mahang=9”);
echo "Records deleted: " . mysql_affected_rows();
mysql_close($con);
?>