Để minh họa rõ ràng việc truy cập thông tin từ cơ sở dữ liệu bằng AJAX dễ dàng như thế nào, chúng ta sẽ xây dựng các truy vấn MySQL một cách nhanh chóng và hiển thị kết quả trên "ajax. html". Nhưng trước khi chúng tôi tiến hành, hãy để chúng tôi làm công việc cơ bản. Tạo một bảng bằng lệnh sau
LƯU Ý - Chúng tôi cho rằng bạn có đủ đặc quyền để thực hiện các thao tác MySQL sau
CREATE TABLE 'ajax_example' [ 'name' varchar[50] NOT NULL, 'age' int[11] NOT NULL, 'sex' varchar[1] NOT NULL, 'wpm' int[11] NOT NULL, PRIMARY KEY ['name'] ]
Bây giờ kết xuất dữ liệu sau vào bảng này bằng cách sử dụng các câu lệnh SQL sau -
INSERT INTO 'ajax_example' VALUES ['Jerry', 120, 'm', 20]; INSERT INTO 'ajax_example' VALUES ['Regis', 75, 'm', 44]; INSERT INTO 'ajax_example' VALUES ['Frank', 45, 'm', 87]; INSERT INTO 'ajax_example' VALUES ['Jill', 22, 'f', 72]; INSERT INTO 'ajax_example' VALUES ['Tracy', 27, 'f', 0]; INSERT INTO 'ajax_example' VALUES ['Julie', 35, 'f', 90];
Tệp HTML phía máy khách
Bây giờ hãy để chúng tôi có tệp HTML phía máy khách của chúng tôi, đó là ajax. html, và nó sẽ có đoạn mã sau -
Max Age:
Max WPM:
Sex:Your result will display here
LƯU Ý − Cách truyền biến trong Query là theo chuẩn HTTP và có dạngA
URL?variable1 = value1;&variable2 = value2;
Đoạn mã trên sẽ cung cấp cho bạn một màn hình như bên dưới -
Kết quả của bạn sẽ hiển thị ở đây trong phần này sau khi bạn đã nhập
LƯU Ý - Đây là màn hình giả
Tệp PHP phía máy chủ
Tập lệnh phía máy khách của bạn đã sẵn sàng. Bây giờ, chúng ta phải viết tập lệnh phía máy chủ, tập lệnh này sẽ tìm nạp tuổi, wpm và giới tính từ cơ sở dữ liệu và sẽ gửi lại cho máy khách. Đặt đoạn mã sau vào tệp "ajax-example. php"
"; $display_string .= ""; $display_string .= "Name"; $display_string .= "Age"; $display_string .= "Sex"; $display_string .= "WPM"; $display_string .= ""; // Insert a new row in the table for each person returned while[$row = mysql_fetch_array[$qry_result]] { $display_string .= ""; $display_string .= "$row[name]"; $display_string .= "$row[age]"; $display_string .= "$row[sex]"; $display_string .= "$row[wpm]"; $display_string .= ""; } echo "Query: " . $query . "
"; $display_string .= ""; echo $display_string; ?>
Bây giờ hãy thử bằng cách nhập một giá trị hợp lệ [e. g. , 120] trong Max Age hoặc bất kỳ hộp nào khác rồi nhấp vào nút Truy vấn MySQL
Kết quả của bạn sẽ hiển thị ở đây trong phần này sau khi bạn đã nhập
Nếu bạn đã hoàn thành bài học này, thì bạn đã biết cách sử dụng song song MySQL, PHP, HTML và Javascript để viết các ứng dụng AJAX
Bạn có thể tạo chức năng tìm kiếm cơ sở dữ liệu trực tiếp đơn giản bằng cách sử dụng Ajax và PHP, nơi kết quả tìm kiếm sẽ được hiển thị khi bạn bắt đầu nhập một số ký tự vào hộp nhập tìm kiếm
Trong hướng dẫn này, chúng ta sẽ tạo hộp tìm kiếm trực tiếp để tìm kiếm bảng quốc gia và hiển thị kết quả không đồng bộ. Nhưng, trước hết chúng ta cần tạo bảng này
Bước 1. Tạo bảng cơ sở dữ liệu
Thực hiện truy vấn SQL sau để tạo bảng quốc gia trong cơ sở dữ liệu MySQL của bạn
CREATE TABLE countries [
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR[50] NOT NULL
];
Sau khi tạo bảng, bạn cần điền vào bảng một số dữ liệu bằng cách sử dụng câu lệnh SQL
INSERT INTO 'ajax_example' VALUES ['Jerry', 120, 'm', 20]; INSERT INTO 'ajax_example' VALUES ['Regis', 75, 'm', 44]; INSERT INTO 'ajax_example' VALUES ['Frank', 45, 'm', 87]; INSERT INTO 'ajax_example' VALUES ['Jill', 22, 'f', 72]; INSERT INTO 'ajax_example' VALUES ['Tracy', 27, 'f', 0]; INSERT INTO 'ajax_example' VALUES ['Julie', 35, 'f', 90];0. Ngoài ra, bạn có thể tải xuống bảng các quốc gia được điền sẵn bằng cách nhấp vào nút tải xuống và nhập nó vào cơ sở dữ liệu MySQL của bạn
Vui lòng xem hướng dẫn về câu lệnh SQL
INSERT INTO 'ajax_example' VALUES ['Jerry', 120, 'm', 20]; INSERT INTO 'ajax_example' VALUES ['Regis', 75, 'm', 44]; INSERT INTO 'ajax_example' VALUES ['Frank', 45, 'm', 87]; INSERT INTO 'ajax_example' VALUES ['Jill', 22, 'f', 72]; INSERT INTO 'ajax_example' VALUES ['Tracy', 27, 'f', 0]; INSERT INTO 'ajax_example' VALUES ['Julie', 35, 'f', 90];1 để biết thông tin chi tiết về cú pháp tạo bảng trong hệ thống cơ sở dữ liệu MySQL
Bước 2. Tạo biểu mẫu tìm kiếm
Bây giờ, hãy tạo một giao diện web đơn giản cho phép người dùng tìm kiếm trực tiếp tên của các quốc gia có sẵn trong bảng quốc gia của chúng tôi, giống như tự động hoàn thành hoặc nhập liệu
Tạo một tệp PHP có tên là "search-form. php" và đặt đoạn mã sau vào bên trong nó
PHP Live MySQL Database Search
Mỗi khi nội dung của đầu vào tìm kiếm bị thay đổi hoặc sự kiện keyup xảy ra trên đầu vào tìm kiếm, mã jQuery [dòng số 47 đến 67] đã gửi một yêu cầu Ajax đến "tìm kiếm phụ trợ. php" lấy các bản ghi từ bảng quốc gia liên quan đến cụm từ được tìm kiếm. Những bản ghi đó sau này sẽ được chèn vào bên trong một
bởi jQuery và hiển thị trên trình duyệt
Bước 3. Xử lý truy vấn tìm kiếm trong phụ trợ
Và đây là mã nguồn của "backend-search. php" tìm kiếm cơ sở dữ liệu dựa trên chuỗi truy vấn được gửi bởi yêu cầu Ajax và gửi kết quả trở lại trình duyệt
Ví dụ
PDO hướng đối tượng thủ tục
Tải xuống 0]{
// Fetch result rows as an associative array
while[$row = mysqli_fetch_array[$result, MYSQLI_ASSOC]]{
echo "" . $row["name"] . "
";
}
} else{
echo "No matches found
";
}
} else{
echo "ERROR: Could not able to execute $sql. " . mysqli_error[$link];
}
}
// Close statement
mysqli_stmt_close[$stmt];
}
// close connection
mysqli_close[$link];
?>
connect_error];
}
if[isset[$_REQUEST["term"]]]{
// Prepare a select statement
$sql = "SELECT * FROM countries WHERE name LIKE ?";
if[$stmt = $mysqli->prepare[$sql]]{
// Bind variables to the prepared statement as parameters
$stmt->bind_param["s", $param_term];
// Set parameters
$param_term = $_REQUEST["term"] . '%';
// Attempt to execute the prepared statement
if[$stmt->execute[]]{
$result = $stmt->get_result[];
// Check number of rows in the result set
if[$result->num_rows > 0]{
// Fetch result rows as an associative array
while[$row = $result->fetch_array[MYSQLI_ASSOC]]{
echo "" . $row["name"] . "
";
}
} else{
echo "No matches found
";
}
} else{
echo "ERROR: Could not able to execute $sql. " . mysqli_error[$link];
}
}
// Close statement
$stmt->close[];
}
// Close connection
$mysqli->close[];
?>
setAttribute[PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION];
} catch[PDOException $e]{
die["ERROR: Could not connect. " . $e->getMessage[]];
}
// Attempt search query execution
try{
if[isset[$_REQUEST["term"]]]{
// create prepared statement
$sql = "SELECT * FROM countries WHERE name LIKE :term";
$stmt = $pdo->prepare[$sql];
$term = $_REQUEST["term"] . '%';
// bind parameters to statement
$stmt->bindParam[":term", $term];
// execute the prepared statement
$stmt->execute[];
if[$stmt->rowCount[] > 0]{
while[$row = $stmt->fetch[]]{
echo "" . $row["name"] . "
";
}
} else{
echo "No matches found
";
}
}
} catch[PDOException $e]{
die["ERROR: Could not able to execute $sql. " . $e->getMessage[]];
}
// Close statement
unset[$stmt];
// Close connection
unset[$pdo];
?>
Câu lệnh SQL
INSERT INTO 'ajax_example' VALUES ['Jerry', 120, 'm', 20]; INSERT INTO 'ajax_example' VALUES ['Regis', 75, 'm', 44]; INSERT INTO 'ajax_example' VALUES ['Frank', 45, 'm', 87]; INSERT INTO 'ajax_example' VALUES ['Jill', 22, 'f', 72]; INSERT INTO 'ajax_example' VALUES ['Tracy', 27, 'f', 0]; INSERT INTO 'ajax_example' VALUES ['Julie', 35, 'f', 90];2 được sử dụng kết hợp với toán tử
INSERT INTO 'ajax_example' VALUES ['Jerry', 120, 'm', 20]; INSERT INTO 'ajax_example' VALUES ['Regis', 75, 'm', 44]; INSERT INTO 'ajax_example' VALUES ['Frank', 45, 'm', 87]; INSERT INTO 'ajax_example' VALUES ['Jill', 22, 'f', 72]; INSERT INTO 'ajax_example' VALUES ['Tracy', 27, 'f', 0]; INSERT INTO 'ajax_example' VALUES ['Julie', 35, 'f', 90];3 [dòng số 16] để tìm các bản ghi phù hợp trong bảng cơ sở dữ liệu quốc gia. Chúng tôi đã triển khai câu lệnh đã chuẩn bị để có hiệu suất tìm kiếm tốt hơn cũng như để ngăn chặn cuộc tấn công SQL injection
Ghi chú. Luôn lọc và xác thực đầu vào của người dùng trước khi sử dụng nó trong câu lệnh SQL. Bạn cũng có thể sử dụng hàm PHP
INSERT INTO 'ajax_example' VALUES ['Jerry', 120, 'm', 20]; INSERT INTO 'ajax_example' VALUES ['Regis', 75, 'm', 44]; INSERT INTO 'ajax_example' VALUES ['Frank', 45, 'm', 87]; INSERT INTO 'ajax_example' VALUES ['Jill', 22, 'f', 72]; INSERT INTO 'ajax_example' VALUES ['Tracy', 27, 'f', 0]; INSERT INTO 'ajax_example' VALUES ['Julie', 35, 'f', 90];4 để thoát các ký tự đặc biệt trong đầu vào của người dùng và tạo một chuỗi SQL hợp lệ để bảo vệ chống lại SQL injection