Hinh 3.5.Error! No text of specified style in document..3
Chúng làm việc như thế nào?
Khi chúng ta muốn lấy thông tin tên, ta có: SELECT *FROM
Nhưng thay vì bạn viết:
$query=”SELECT movie_name, movie_type”
Kế đến, chúng ta muốn lấy thông tin từ bảng nào “FROM movie”
Sau đó, ta đưa điều kiện muốn thấy thông tin từ năm 1990 trở lên:
WHERE movie_year>1990”
Có thể bạn quan tâm!
- Cơ sở dữ liệu APACHE, PHP, MYSQL - 6
- Xen Lẫn Trong Việc Sử Dụng Dấu (“”).
- Các Kiểu Bảng Của My Sql Và Kỹ Thuật Lưu Trữ
- Sử Dụng Bảng Để Trình Bày Dữ Liệu
- Cơ sở dữ liệu APACHE, PHP, MYSQL - 11
- Cơ sở dữ liệu APACHE, PHP, MYSQL - 12
Xem toàn bộ 258 trang tài liệu này.
Bạn cần kết quả xuất ra được sắp xếp theo thứ tự bạn muốn: ORDER BY movie_type;
Kế đó, chúng ta tập hợp tất cả những dòng theo yêu cầu đã đưa ra của
bạn:
$results mysql_query($query) Ordie(mysql_error());
Sau đó, chúng ta kết hợp đưa ra kết quả với những dòng:
while ($row = mysql_fetch_array($results))
{
extract($row);
echo $movie_name; echo " - ";
echo $movie_type; echo "<br>";
}
Ghi chú với mỗi dòng tìm thấy, bạn lưu trữ bảng này trong một mảng $row, sử
dụng hàm mysql_fetch_array(), sau đó giải các biến trong $row, sử dụng hàm xuất ra những gì bạn cần.
3.5.2. Làm việc với PHP và mảng dữ liệu: foreach
extract,
Hàm foreach tương tự như hàm While, nếu sử dụng while kết hợp thông
qua một danh sách kết quả từ truy vấn foreach ($row as $value)
{
echo $value; echo “<br>”;
}
Ví dụ về việc sử dụng foreach. Mở tập select.php sửa đổi lại như sau.
<?php
//connect to MySQL
$connect = mysql_connect("localhost", "root", "")
or die("Hey loser, check your server connection.");
//make sure we're using the right database mysql_select_db("moviesite");
$query = "SELECT movie_name, movie_type " ."FROM movie ";
$results = mysql_query($query) or die(mysql_error());
//while ($row = mysql_fetch_array($results,MYSQL_ASSOC)){ while ($row = mysql_fetch_assoc($results))
{
foreach ($row as $val1)
{
echo $val1; echo " ";
}
echo "<br>";
//extract($row);
//echo $movietype_id;
//echo " - ";
//echo $movietype_label;
}
?>
Sau khi cho chạy chương trình, giao diện như Hinh 3.5.2.1
:
Hinh 3.5.2.1
Nó làm việc thế nào:
Ghi chú:Ở đây có sử dụng
while ($row = mysql_fetch_assoc($results))
{
foreach ($row as $val1)
{
echo $val1; echo “ “;
}
}
So với phần trước, dùng hàm
while ($row = mysql_fetch_array($results))
{
extract($row);
echo $movie_name; echo “ - “;
echo $movie_type; echo “<br>”;
}
Dùng hàm foreach ta thấy ngắn gọn hơn , nó xuất tất cả thông tin liên quan mà khôn cần dùng lệnh echo để chỉ định.
Một điều cần chú ý nữa là nếu ta sử dụng lệnh: while ($row =
mysql_fetch_array($results)) thay cho câu lệnh :while ($row = mysql_fetch_assoc($results)) thì kết quả sẽ xuất ra 2 lần.
Để khắc phục tình trạng này ta dùng:
mysql_fetch_array($results,MYSQL_ASSOC) hoặc mysql_fetch_assoc
Sử dụng fereach để tạo một mảng Ví dụ. select2.php
` <?php
//connect to MySQL
$connect = mysql_connect("localhost", "root", "")
or die("Hey loser, check your server connection.");
//make sure we’re using the right database mysql_select_db("moviesite");
$query = "SELECT * " . "FROM movie " .
"WHERE movie_year>1990 " . "ORDER BY movie_type";
$results = mysql_query($query)
or die(mysql_error());
echo "<table border="1">n";
while ($row = mysql_fetch_assoc($results))
{
echo "<tr>n"; foreach($row as $value)
{
echo "<td>n"; echo $value; echo "</td>n";
}
echo "</tr>n";
}
echo "</table>n";
?>
Kết quả sau khi chạy như Hinh 3.5.2.2
:
Hinh 3.5.2.2
Ở đây làm việc thế nào?
Bạn sử dụng mệnh mysql_query và while để phục hồi lại lĩnh vực của bạn.Sau đó, với mỗi giá trị bạn nhận lại, bạn đặt nó ở mỗi ô phân cách và kết chúng lại trong html và echo
3.5.3. Liên hệ giữa 2 bảng
Bạn có thể lấy thông tin từ nhiều bảng theo hai cách:
- Chuyển đến những bảng riêng biệt trong truy vấn của bảng và liên kết chúng ttrong một vùng chung tạm thời.
- Sử dụng công thức JOIN trong truy vấn của bạn đối với những bảng riêng biệt.
Dùng câu lệnh SELECT để phân biệt giữa hai bảng trong dữ liệu của bạn, kết nối chúng trong một bảng mới.
$query = “SELECT customers.name, orders.order_total FROM customers, orders
WHERE customers.cust_ID = orders.cust_ID”;
//trả về tên khách hàng từ bảng khách hàng và order_total từ bảng order nơi mà cust_ID trong bảng customers bằng với cust_ID trong bảng order.
Ví dụ : select21.php
<?php
//connect to MySQL
$connect = mysql_connect("localhost", "root", "")
or die ("Hey loser, check your server connection.");
//make sure we’re using the right database mysql_select_db("moviesite");
$query = "SELECT movie.movie_name, movietype.movietype_label " .
"FROM movie, movietype " .
"WHERE movie.movie_type = movietype.movietype_id " . "AND movie.movie_year>1990 " .
"ORDER BY movie_type";
$results = mysql_query($query) or die(mysql_error());
echo "<table border="1">n";
while ($row = mysql_fetch_assoc($results))
{
echo "<tr>n"; foreach($row as $value)
{
echo "<td>n"; echo $value; echo "</td>n";
}
echo "</tr>n";
}
echo "</table>n";
?>
Kết quả như Hinh 3.5.3
:
Ghi chú:
Hinh 3.53
Ở đây có hai vùng được liên kết với nhau thông qua WHERE, những số id từ hai bảng khác nhau (movie_type trong bảng movie và movietype_id trong bảng movietype) được liên kết với nhau .
3.5.4. Kết nối hai bảng (Join two tables)
Cũng giống như
SELECT là:
phần kết hợp hai bảng
ở trên, nhưng
ở đây câu lệnh
SELECT movie_name, movietype_label.
Bạn muốn cập nhật dữ liệu loại nào dùng câu lệnh: FROM movie
LEFT JOIN movietype
Dùng câu lệnh trên có nghĩa đơn giản là movietype phụ thuộc vào movie.
Sau đó bạn gửi đến server vùng nào cần kết nối như sau: ON movie_type = movietype_id.
Ví dụ : select22.php
<?php
//connect to MySQL
$connect = mysql_connect("localhost", "root", "")
or die ("Hey loser, check your server connection.");
//make sure we’re using the right database mysql_select_db("moviesite");
$query = "SELECT movie_name, movietype_label ". "FROM movie ".
"LEFT JOIN movietype ".
"ON movie_type = movietype_id ". "WHERE movie.movie_year>1990 ". "ORDER BY movie_type";
$results = mysql_query($query) or die(mysql_error());
echo "<table border="1">n";
while ($row = mysql_fetch_assoc($results))
{
echo "<tr>n"; foreach($row as $value)
{
echo "<td>n"; echo $value; echo "</td>n";
}
echo "</tr>n";
}
echo "</table>n";