2011-08-08 36 views
5

Mọi người tiếp tục đề cập rằng tôi nên sử dụng PDO trong PHP của tôi khi giao dịch với MySQL, tôi chưa bao giờ nghe nói về điều này trước đây.PDO là gì và tại sao tôi nên sử dụng nó?

PDO là gì? Làm thế nào là nó được sử dụng và những ưu và nhược điểm là gì?

Cảm ơn,

+0

thể trùng lặp của [mysql vs PDO] (http: // stackoverflow.com/questions/866860/mysql-vs-pdo) –

+0

Hãy nhìn vào MySQLi. Đây là một lớp OOP để truy cập MySQL trong PHP. Đó là một sự kết hợp giữa SQL thô và PDO. –

+0

@T. Brian Jones là bạn đang nói về tuyên bố chuẩn bị? –

Trả lời

0

http://php.net/manual/en/book.pdo.php

Các PHP Data Objects (PDO) mở rộng định nghĩa một giao diện gọn nhẹ, phù hợp để truy cập cơ sở dữ liệu trong PHP.

PDO cung cấp lớp trừu tượng truy cập dữ liệu, nghĩa là, bất kể bạn đang sử dụng cơ sở dữ liệu nào, bạn sử dụng cùng chức năng để phát hành truy vấn và tìm nạp dữ liệu. PDO không cung cấp cơ sở dữ liệu trừu tượng; nó không viết lại SQL hoặc mô phỏng các tính năng còn thiếu. Bạn nên sử dụng một lớp trừu tượng đầy đủ nếu bạn cần cơ sở đó.

0

PDO là lớp hướng đối tượng để soạn và thực thi truy vấn MySQL. Điều này có vẻ giống như một lớp phức tạp hơn, nhưng PDO thực sự cho phép bạn viết các truy vấn đơn giản hơn trong php của bạn, và để lập trình các truy vấn viết (mã khác xây dựng các dòng khác nhau của truy vấn của bạn cho bạn).

PDO cũng xử lý rất nhiều vấn đề bảo mật như thoát truy vấn sql của bạn. Bạn sẽ không bao giờ thực hiện bất kỳ điều nào trong số này nếu bạn không sử dụng lớp trừu tượng cơ sở dữ liệu như PDO và thậm chí nếu bạn cố gắng, bạn có thể dễ dàng quên hoặc làm điều đó không chính xác.

Nếu bạn không quan tâm đến bảo mật (những thứ như SQL injection) và bạn có thể viết các truy vấn MySQL tự nhiên mà bạn cần, thì bạn không cần phải lo lắng về nó. Việc học nó có thể làm mọi thứ dễ dàng hơn trong tương lai khi bạn làm việc trên các dự án có cấu trúc hơn sử dụng các khung công tác.

14

Hãy coi PDO là lớp được xây dựng sẵn có kèm theo PHP để giúp bạn dễ dàng tương tác với cơ sở dữ liệu của mình hơn. trong khi phát triển một ứng dụng PHP, bạn cần phải chăm sóc rất nhiều thứ như thiết lập kết nối, tạo truy vấn, tìm nạp tài nguyên chuyển đổi kết quả thành một mảng, thoát khỏi MySQL Injection bằng cách sử dụng mysql_real_escape_string() bây giờ là rất nhiều thứ cần được quan tâm, ít nhất nhưng không phải là cuối cùng xem xét một tình huống mà bạn muốn chuyển từ mysql để mysqli hoặc MSSQL cho rằng bạn cần phải đi qua mỗi và mọi chức năng và thay đổi mỗi dòng mã cho phù hợp với nhu cầu. PDO loại trừ tất cả vấn đề này bằng cách cung cấp một lớp tập trung.

Để xây dựng, hãy xem mã bên dưới.

để thiết lập kết nối tới MySQL Sử dụng PDO:

$dbh = new PDO('mysql:host='.HOST.';dbname='.DATABASE,USERNAME,PASSWORD); 

đó là nó, kết nối được thiết lập và bạn có thể tái sử dụng $ dbh để thực hiện các truy vấn ví dụ để lấy kết quả từ một người sử dụng bảng bạn chỉ cần hai dòng mã.

$sth = $dbh->query('SELECT id,name,email FROM users'); 
$user = $sth->fetch(PDO::FETCH_ASSOC); 

Bây giờ $user sẽ có tất cả giá trị được tìm nạp như một mảng kết hợp.

Để chèn giá trị vào cơ sở dữ liệu bạn cần thực hiện các thao tác sau.

$sth = $dbh->prepare('INSERT INTO users(name,email) VALUES(:name, :email)'); 
$sth->bindParam(':name', 'My Name'); 
$sth->bindParam(':email', '[email protected]'); 
$sth->execute(); 

Đoạn mã trên sẽ sử dụng trình giữ chỗ được đặt tên theo cách này PDO sẽ giúp bạn tránh xa khỏi việc tiêm MySQL. để giúp bạn bắt đầu có một cái nhìn tại hướng dẫn này bởi netttus, họ đã giải thích nó rất độc đáo, bài viết này sẽ giải thích tất cả các tình huống khó xử của bạn về PDO

http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/

+0

Ibrahim, bạn có biết $ sth là viết tắt của cái gì không? Và dấu hai chấm là gì? Ví dụ:: name,: emai. Tôi cũng không hiểu bindParam này. Cảm ơn bạn! –

+2

'$ sth' là một biến được sử dụng để tham chiếu' xử lý câu lệnh' cho các truy vấn PDO, ': name,: email' vv là trình giữ chỗ, bindParam thay thế': name' bằng 'My name' trong ví dụ trên. bạn nên đi qua bài viết đã đề cập ở trên, tác giả đã đưa ra một số điểm rất tốt sẽ giúp bạn hiểu được khái niệm –

+0

Tôi đã đọc toàn bộ bài báo. PDO này có vẻ rất tiên tiến và được thực hành bảo mật, nhưng tôi không hiểu cách trình giữ chỗ bảo vệ MySQL và không bị tiêm. Họ trông giống như các biến thông thường? –

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