Thực ra bạn đang làm quá nhiều:
$query = $dbh->prepare("SELECT * FROM students");
$query->execute();
$result = $dbh->query($query);
Dòng có vấn đề là:
$result = $dbh->query($query);
Kiểm tra bằng http://php.net/pdo.query
, tham số là một chuỗi, thực sự là chuỗi SQL mà bạn đã sử dụng ở trên, không phải giá trị kết quả của PDO::prepare()
cuộc gọi.
Đối với truy vấn đơn giản của bạn, bạn chỉ có thể thực hiện:
$result = $dbh->query("SELECT * FROM students");
Hoặc nếu bạn muốn chuẩn bị:
$query = $dbh->prepare("SELECT * FROM students");
$query->execute();
$result = $query;
Phần sau là một số bản soạn sẵn nếu bạn muốn chèn các biến vào truy vấn, đó là lý do tại sao bạn chuẩn bị nó.
Vấn đề tiếp theo là với foreach
dòng:
foreach($result as $row);
Bạn đang kết thúc vòng lặp ngay lập tức vì dấu chấm phẩy ;
cuối cùng. Xóa dấu chấm phẩy đó để khối mã có dấu ngoặc nhọn sau trở thành phần chính của vòng lặp foreach.