Trước khi truy vấn SQL trong PHP, bạn nên kiểm tra câu lệnh SQL trong
phpMyAdmin. Nó có thể biên dịch SQL trước khi chèn vào đoạn mã và ngăn chặn việc biên dịch hai ngôn ngữ khác nhau trong cùng thời gian.
Cách thức làm việc
Khi chèn một mẩu tin trong bảng, không cần chèn ID nếu bạn đặt ở vùng khóa chính tự động giảm. SQL sẽ dễ dàng. Điều này chắc chắn rằng không có những khóa giống nhau trong bảng.
Để lấy id tự
động của mẩu tin chèn trong PHP phải sử
dụng hàm
mysql_insert_id() sau đó gọi hàm mysql_query(). Hàm này trả về khóa chính khi chèn 1 mẩu tin mới.
Bởi vì bạn đã tạo truy vấn SQL nhiều hơn một dòng, bạn có thể thấy thông báo
sau:
Có thể bạn quan tâm!
- Điều Khiển Một Chuỗi Bằng Tay Như Một Mảng Để Đổi Ký Tự Đầu Tiên
- Cơ sở dữ liệu APACHE, PHP, MYSQL - 16
- Cho Phép Người Sử Dụng Soạn
- Cơ sở dữ liệu APACHE, PHP, MYSQL - 19
- Cơ sở dữ liệu APACHE, PHP, MYSQL - 20
- Tôi Có Thể Sử Dụng Loại Files Gì Với Gd Và Php?
Xem toàn bộ 258 trang tài liệu này.
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’2003)’ at line 2
Dòng này tương ứng với một phần giá trị của câu lệnh SQL, như hiển thị ở
đây:VALUES (‘Bruce Almighty’, ‘1’, ‘2003)
Nếu truy vấn SQL ở trên một dòng thì chỉ có một thông báo “error in line 1”. Bạn có thể thấy điểm sai là bạn quên đóng dấu nháy trong giá trị movie_year value.
Bây giờ bạn có thể thấy chúng ta đã bỏ sót trong vùng movie. movie _id. Chúng ta làm điều này có mục đích. (Không có một sức mạnh đặc biệt của giá trị khóa chính nào trong phương tiện của MySQL để tự động quyết định giảm giá trị tự động). Bạn không cần biết khóa tiếp theo là gì
6.3. Chèn một mẩu tin trong cơ sở dữ liệu quan hệ
Trong cơ sở dữ liệu thường có nhiều bảng. Tất cả các bảng này có thể hoàn toàn
độc lập, nhưng sẽ giống như việc sử dụng xe hơi của bạn để lưu trữ một vài thứ trong thùng xe nhưng không bao giờ lái xe.
Trong hệ thống cũ của cơ sở dữ liệu quan hệ không tồn tại, mỗi dòng chứa tất cả các thông tin. Hệ thống đang chạy chỉ với một bảng chứa tất cả các thông tin. Bảng movie sẽ chứa tất cả các dữ liệu về diễn viên và đạo diễn và những loại khác trong
phim. Giả sử rằng một ngày nào đó bạn quyết định một loại film nào đó sẽ được
chuyển từ hành động sang thám hiểm (thay đổi mọi thứ). Bạn sẽ thông qua tất cả mẩu
tin để thay đổi các nhãn film.
Trong hệ quản trị cơ sở dữ liệu mới(RDBMS), nó không hơn trường hợp nào,
bạn sẽ tạo ra một bảng movietype lưu trữ tất cả các loại film được chuyển đến và bạn sẽ liên kết những loại film đó với loại film có liên quan.
Để liên kết những bảng đó, bạn sử dụng một loại khóa chính/khóa ngoại. Khóa chính của bảng movietype là một số xác định cho mỗi loại film. Ví dụ trong cơ sở dữ liệu của bạn id 1 có liên quan đến film hài. Khóa ngoại là quan hệ giữa bảng movie đến khóa chính của movietype.
Trong bài tập sau bạn sử dụng PHP và MySQL để chèn một bộ film vào cơ sở dữ liệu . Film này là một loại film từ bảng movietype.
Ví dụ : Chèn một bộ film với người và loại film đã biết.
Trong thời gian này chúng ta sẽ làm một vài thứ phức tạp hơn. Bạn sẽ thêm một bộ film vào hệ thống, trong khi ghi rõ có sẵn loại film, diễn viên và đạo díễn.
1. Tạo một file mới tên movie.php và nhập đoạn mã sau:
<?php
$link = mysql_connect(“localhost”, “bp5am”, “bp5ampass”) or die(“Could not connect: “ . mysql_error()); mysql_select_db(‘moviesite’, $link)
or die ( mysql_error());
$peoplesql = “SELECT * FROM people”;
$result = mysql_query($peoplesql)
or die(“Invalid query: “ . mysql_error()); while ($row = mysql_fetch_array($result))
{
$people[$row[‘people_id’]] = $row[‘people_fullname’];
}
?>
<html>
<head>
<title>Add movie</title>
<tr>
</tr>
<tr>
<style type=”text/css”> TD{color:#353535;font-family:verdana}
TH{color:#000000;font-family:verdana;background-color:#336699}
</style>
</head>
<body>
<form action=”commit.php?action=add&type=movie” method=”post”>
<table border=”0” width=”750” cellspacing=”1” cellpadding=”3” bgcolor=”#353535” align=”center”>
<td bgcolor=”#FFFFFF” width=”30%”>Movie Name</td>
<td bgcolor=”#FFFFFF” width=”70%”>
<input type=”text” name=”movie_name”>
</td>
<td bgcolor=”#FFFFFF”>Movie Type</td>
<td bgcolor=”#FFFFFF”>
<select id=”game” name=”movie_type” style=”width:150px”>
<?php
$sql = “SELECT movietype_id, movietype_label “ . “FROM movietype ORDER BY movietype_label”;
$result = mysql_query($sql)
or die(“<font color=”#FF0000”>Query Error</font>” . mysql_error());
while ($row = mysql_fetch_array($result)) {
echo ‘<option value=”’ . $row[‘movietype_id’] . ‘“>’ .
$row[‘movietype_label’] . ‘</option>’ . “rn”;
}
?>
</select>
</tr>
<tr>
</td>
<td bgcolor=”#FFFFFF”>Movie Year</td>
<td bgcolor=”#FFFFFF”>
<select name=”movie_year”>
<option value=”” selected>Select a year...</option>
<?php
<?php
}
?>
for ($year = date(“Y”); $year >= 1970; $year--) {
?>
<option value=”<?php echo $year; ?>”><?php echo $year; ?></option>
</tr>
<tr>
</select>
</td>
<td bgcolor=”#FFFFFF”>Lead Actor</td>
<td bgcolor=”#FFFFFF”>
<select name=”movie_leadactor”>
<option value=”” selected>Select an actor...</option>
<?php
foreach ($people as $people_id => $people_fullname) {
?>
<option value=”<?php echo $people_id; ?>” >
<?php
echo $people_fullname; ?></option>
<?php
}
</tr>
?>
</select>
</td>
<tr>
<td bgcolor=”#FFFFFF”>Director</td>
<td bgcolor=”#FFFFFF”>
<select name=”movie_director”>
<option value=”” selected>Select a director...</option>
<?php
foreach ($people as $people_id => $people_fullname) {
?>
<option value=”<?php echo $people_id; ?>” >
<?php
echo $people_fullname; ?></option>
<?php
}
?>
</td>
</tr>
</tr>
</select>
<tr>
<td bgcolor=”#FFFFFF” colspan=”2” align=”center”>
<input type=”submit” name=”SUBMIT” value=”Add”>
</td>
</table>
</form>
</body>
</html>
2. Lưu file và đưa lên server trong thư mục chap6.
3. Tạo một file mới tên commit.php và nhập đoạn mã:
<?php
// COMMIT ADD
$link = mysql_connect(“localhost”, “bp5am”, “bp5ampass”) or die(“Could not connect: “ . mysql_error()); mysql_select_db(‘moviesite’, $link)
or die ( mysql_error()); switch ($_GET[‘action’])
{
case “add”:
switch ($_GET[‘type’])
{
case “movie”:
$sql = “INSERT INTO movie (movie_name,
movie_year, movie_type, movie_leadactor, movie_director) VALUES
(‘“ . $_POST[‘movie_name’] . “‘,
‘“ . $_POST[‘movie_year’] . “‘,
‘“ . $_POST[‘movie_type’] . “‘,
‘“ . $_POST[‘movie_leadactor’] . “‘,
‘“ . $_POST[‘movie_director’] . “‘)”; break;
}
break;
}
if (isset($sql) && !empty($sql))
{
echo “<!--” . $sql . “-->”;
$result = mysql_query($sql)
or die(“Invalid query: “ . mysql_error());
?>
<p align=”center” style=”color:#FF0000”> Done. <a href=”index.php”>Index</a>
</p>
<?php
}
?>
4. Lưu file vào thư mục chap6.
5. Mở trình duyệt trang index.php và click ADD tiếp theo phần đầu của bảng movie. Kết quả như Hình 6.3.1
Hình 6.3.1
6. Thêm 1 movie named “Test” với kiểu tự do, diễn viên, và đạo diễn như Hình 6.3.2
Hình 6.3.2
7. Click vào nút “add” bạn sẽ thấy như Hình 6.3.3
Cách thức làm việc
Hình 6.3.3
Form HTML cho phép bạn điều khiển cách người dùng nhập dữ liệu. Một nút submit, form gửi thông tin đến server mà PHP có thể sử dụng chung và chạy câu lệnh SQL INSERT.
Như bạn thấy trong việc chèn film trong movie.php, bạn có 4 combo boxes và một vùng Text. Nội dung vùng text được nhập tự do, nhưng combox thì hoàn toàn theo chỉ dẫn. Chúng ta hãy xem lại nội dung của combox từ nội dung cơ sở dữ liệu.
Trước tiên, chúng ta hãy thử trong combox. Mỗi danh sách combox biểu diễn một
người.
<?php
$link = mysql_connect(“localhost”, “root”, “”)
or die(“Could not connect: “ . mysql_error()); mysql_select_db(‘moviesite’, $link)