PHP lỗi lấy dữ liệu từ MySQL trả về cho JavaScript

Xin giúp đỡ

Em có đoạn code PHP như sau:

<?php
include "db_conn.php"; // kết nối tới DB
$offset = @$_GET["offset"];
$query = "SELECT id, name, start_date FROM tbl_course LIMIT 10 OFFSET $offset";
$result = mysqli_query($conn, $query);
$data = mysqli_fetch_array($result);
mysqli_close($conn);
?>
<script type="text/javascript">
var courses = <?= json_encode($data); ?>
console.log(courses);
</script>

File db.conn.php để kết nối tới cơ sở dữ liệu:

<?php
$user = "root";
$pass = "abcd1234";
$db = "my_school";
$conn = @mysqli_connect("127.0.0.1", $user, $pass, $db);

if (!$conn) {
    exit;
}

?>

Bảng tbl_course trên DB có dữ liệu như sau:

mysql> select * from tbl_course;
+----+------+---------------------+
| id | name | start_date          |
+----+------+---------------------+
|  1 | AAA  | 2015-09-15 00:00:00 |
|  2 | BBB  | 2016-09-15 00:00:00 |
+----+------+---------------------+
2 rows in set (0,00 sec)

Nhưng khi em chạy thì biến courses trong Javascript không trả về toàn bộ thông tin DB. View source của trang trên trình duyệt thì thấy như sau:

<script type="text/javascript">
    var courses = "{"0":"1","id":"1","1":"AAA","name":"AAA","2":"2015-09-15 00:00:00","start_date":"2015-09-15 00:00:00"}";
    console.log(courses);
</script>

Mọi người chỉ giúp em đoạn code trên bị sai ở đâu vậy?

Many thanks!!!

Được hỏi 3 tháng trước
Bình chọn bởi: Vũ Huy Hoàng, Truc Le, Đình Anh, Hani Ngoc, Huyền SuBy, Phạm Huy, Quang Nguyen, Hana Pham, Giang River, Trần Diễm, Hanh Nguyen, Thu Thủy, Nguyễn Đạt, Thùy Dương, Nam Nguyễn, Khánh Duy, Tony Huynh, Thuy Linh, Ngọc Nguyễn, Vân Trần, Hằng Đỗ, Vũ Hiển, Ngô Thanh Hải, Quỳnh Anh, Hoàng Giang, Trung Võ, Hiệp Bùi, Hoang Anh, Đinh Quang Huy, Ngọc Đức Trần

Nếu dụng hàm mysql_featch_array() thì mỗi lần gọi PHP chỉ lấy (hay fetch) một record của bảng tương ứng trên database nên sẽ trả về kết quả là 1 record như bạn thấy. Thông thường hàm mysql_featch_array() được dùng với vòng lặp while():

while($row_data = mysqli_fetch_array($result)) {
...
}

Còn nếu như bạn muốn lấy ra toàn bộ record của bảng trong một câu lệnh duy nhất thì có thể dùng hàm mysqli_fetch_all():

$all_row_data = mysqli_fetch_all($result);

Tuy nhiên bạn lưu ý là cận thận trọng khi dùng mysqli_fetch_all() vì với những bảng có một số lượng lớn các dòng và mỗi dòng lại lưu trữ nhiều dữ liệu thì việc gọi hàm này sẽ có thể gây ra lỗi tràn bộ nhớ.

Trả lời 3 tháng trước

Thêm Trả Lời