2012-11-01 77 views
5

Tôi bắt đầu sử dụng PDO gần đây, trước đó tôi chỉ sử dụng mysql .. Bây giờ tôi đang cố gắng lấy tất cả dữ liệu từ cơ sở dữ liệu.PDO lấy dữ liệu từ cơ sở dữ liệu

$getUsers = $DBH->prepare("SELECT * FROM users ORDER BY id ASC"); 
$getUsers->fetchAll(); 
if(count($getUsers) > 0){ 
    while($user = $getUsers->fetch()){ 
     echo $user['username']."<br/>"; 
    } 
}else{ 
    error('No users.'); 
} 

Nhưng nó không hiển thị bất kỳ người dùng, chỉ là một trang trống ..

+0

'lỗi (...) 'là gì? Đảm bảo báo cáo lỗi đang bật .... – Neal

Trả lời

14

Phương pháp PDOfetchAll() trả về một mảng/quả-set, mà bạn cần phải gán cho một biến và sau đó sử dụng/lặp qua rằng biến:

$users = $getUsers->fetchAll(); 
foreach ($users as $user) { 
    echo $user['username'] . '<br />'; 
} 

CẬP NHẬT (thiếu execute())
Ngoài ra, nó xuất hiện bạn không gọi t ông execute() phương pháp mà cần phải xảy ra sau bạn chuẩn bị báo cáo kết quả nhưng trước bạn thực sự tìm nạp dữ liệu:

$getUsers = $DBH->prepare("SELECT * FROM users ORDER BY id ASC"); 
$getUsers->execute(); 
$users = $getUsers->fetchAll(); 
... 
+0

Nó không hoạt động anyway .. trang trống, không có lỗi. – chizijs

+0

@ user1791971 Nếu bạn làm 'var_dump ($ users);', sau 'fetchAll()', nó hiển thị cái gì? – newfurniturey

+0

bạn có kiểm tra lỗi và hiển thị lỗi hay không: thêm 'error_reporting (E_ALL); ini_set ('display_errors', '1'); 'ở đầu tập lệnh –

2
So simple 
follow this step 
$sql = $dbh->prepare("SELECT * FROM users ORDER BY id ASC"); 
$sql->execute(); 
while($result = $sql->fetch(PDO::FETCH_ASSOC)){ 
?> 
<tr> 
<td><?php echo $result['field1'];?></td> 
<td><?php echo $result['field2'];?></td> 

</tr> 
<?php } ?> 
Các vấn đề liên quan