2009-09-21 34 views
30

Tôi đã được thông báo hôm nay rằng tôi thực sự nên sử dụng PDO và các tuyên bố chuẩn bị trong đơn đăng ký của mình. Trong khi tôi hiểu những lợi ích, tôi đang đấu tranh để hiểu làm thế nào tôi thực hiện chúng vào công việc của tôi. Bên cạnh thực tế là nó làm cho mã sạch hơn nhiều, tôi nên có một lớp cơ sở dữ liệu cụ thể mà nhà tất cả các báo cáo chuẩn bị của tôi hoặc tôi nên tạo một mỗi lần tôi muốn chạy một truy vấn? Tôi đang tìm kiếm nó rất khó hiểu khi tôi nên sử dụng một truy vấn PDO tiêu chuẩn và khi tôi nên sử dụng một tuyên bố chuẩn bị. Bất kỳ ví dụ, mẹo hoặc liên kết hướng dẫn nào sẽ được đánh giá cao.Báo cáo chuẩn bị PDO PHP

Trả lời

31

Có hai ví dụ tuyệt vời về tài liệu pdo::prepare().

Tôi đã đưa chúng vào đây và đơn giản hóa chúng một chút.

Thông số này sử dụng thông số ?. $dbh về cơ bản là một đối tượng PDO. Và những gì bạn đang làm là đặt các giá trị 150'red' vào dấu chấm hỏi thứ nhất và thứ hai tương ứng.

/* Execute a prepared statement by passing an array of values */ 
$sth = $dbh->prepare('SELECT name, colour, calories 
         FROM fruit 
         WHERE calories < ? AND colour = ?'); 

$sth->execute(array(150, 'red')); 

$red = $sth->fetchAll(); 

Điều này sử dụng thông số có tên và phức tạp hơn một chút.

/* Execute a prepared statement by passing an array of values */ 
$sql = 'SELECT name, colour, calories 
     FROM fruit 
     WHERE calories < :calories AND colour = :colour'; 

$sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY)); 
$sth->execute(array(':calories' => 150, ':colour' => 'red')); 

$red = $sth->fetchAll(); 
+1

trong 2 ví dụ của bạn, tốt hơn là 1 ví dụ khác không? – JasonDavis

+0

Đối với các truy vấn đơn giản, phải không? Ổn. Nhưng lưu ý rằng các câu lệnh chuẩn bị sẽ thêm một trích dẫn xung quanh mọi giá trị. Trong ví dụ thứ 2, bạn có thể nói rằng một giá trị là một số và giá trị khác là một chuỗi. (mặc dù nó không được hiển thị ở đây) –

+0

Chỉ cần phụ thuộc vào những gì bạn muốn làm với nó ... Nếu bạn muốn sử dụng cùng một giá trị nhiều lần, thì bạn nên sử dụng các tham số có tên. Điều này là bởi vì nếu bạn sử dụng? 'S, nó chỉ đơn giản là chèn chúng theo thứ tự chúng xuất hiện. Nếu bạn đã sử dụng các tham số được đặt tên, thì bạn có thể sử dụng chúng nhiều lần. Của? Chỉ là một phiên bản đặc hơn cho các truy vấn đơn giản hơn. Người ta không có lợi thế hơn người khác theo bất kỳ cách nào khác. – BraedenP

Các vấn đề liên quan