2012-01-05 29 views
5

tôi đã nghiên cứu rất nhiều trên trang web nhưng tôi không tìm thấy bất kỳ thứ gì có thể giúp tôi sử dụng PDO trong trình viết mã. Tôi thấy trong sự thay đổi của CI 2.1.0 (tôi nghĩ) rằng trình điều khiển pdo đã được thêm vào framwork. tôi đã kết thúc ngay bây giờ với một tập tin cấu hình database.php trông như thế này:Codeigniter PDO tích hợp

$db['default']['hostname'] = 'mysql:host=myhostname;port=myport'; 
$db['default']['username'] = 'myusername'; 
$db['default']['password'] = 'mypassword'; 
$db['default']['database'] = 'mydb'; 
$db['default']['dbdriver'] = 'pdo'; 

Vì vậy, bây giờ (sau rất nhiều thời gian lãng phí để có được đoạn mã trên để làm việc -.-) tôi nhận được không có lỗi về kết nối , nhưng CÁCH THỰC HIỆN QUERY NOW? tôi không thể tìm ra cú pháp nào sẽ hoạt động và cách xây dựng các truy vấn. Bất cứ ai cũng có gợi ý?

PS: nếu bạn đang wordering về việc tại sao tôi cần PDO trong ci, câu trả lời là ông chủ của tôi muốn tôi để tạo ra một môi trường có cấu trúc với:

  1. CI 2.x + (thực hiện)
  2. Smarty 3 (thực hiện)
  3. PHPUnit (chưa)
  4. PDO (chưa)

vì vậy nếu bạn có bất kỳ cũng gợi ý cho tích hợp phpunit cảm thấy tự do để trả lời. Ty trước

Trả lời

7

Bạn sử dụng PDO giống như cách bạn sử dụng bất kỳ trình điều khiển cơ sở dữ liệu nào khác trong CodeIgniter. Nếu bạn vẫn không chắc chắn thì tôi khuyên bạn nên đọc tài liệu trên Database Class.

Bạn có thể phát hành truy vấn chuẩn bằng cách viết truy vấn một cách rõ ràng hoặc bạn có thể sử dụng Active Record Class (công cụ tạo nhiều truy vấn hơn).

Dưới đây là một số ví dụ:

// Standard query 
$results = $this->db->query('SELECT name, title, email FROM my_table'); 

// Active record 
$this->db->select('name, title, email'); 
$results = $this->db->get('my_table'); 

Đối với tích hợp PHPUnit, có một cái nhìn tại https://github.com/cmillr/CI-PHPUnit (Tôi đã không kiểm tra nó bản thân mình) hoặc nhìn xung quanh CodeIgniter forums. Tôi đã nhìn thấy rất nhiều chủ đề về tích hợp PHPUnit với CodeIgniter.

+0

thực sự ty cho gợi ý phpunit !!!! bạn đã giúp tôi rất nhiều, tôi đã mất nhiều thời gian tìm kiếm smth cho phpunit nhưng tôi chỉ tìm thấy thư viện ci cũ, v.v ... về pdo u đúng, i dunno tại sao nhưng ở nhà hoạt động tốt, nhưng ở công trình neighter - > truy vấn hoặc AR dường như hoạt động, tôi nên điều tra sâu. Tuy nhiên, một lần nữa XD – th3n3rd

+1

tôi đã sử dụng xdebug để theo dõi những gì CI thực hiện khi tôi gọi cả hai bản ghi hoạt động hoặc phương thức truy vấn, và trong cả hai trường hợp CI không sử dụng lệnh pdo "preparation" lol ... lợi thế của việc sử dụng trình điều khiển pdo nếu CI dont ' sử dụng chức năng pdo bên trong !!! Tôi muốn sử dụng pdo đặc biệt bởi vì nó có một phương pháp truy vấn ràng buộc (không giống như codeigniter một). – th3n3rd

+0

Đây là siêu cũ nhưng hãy chắc chắn để chuẩn bị truy vấn. http://ellislab.com/forums/viewthread/218455/ – RaGe10940

8

Bạn cần thay đổi cấu hình của bạn một chút:

'dsn' => 'mysql:host=localhost;dbname=codeigniter', 
//'hostname' => 'localhost', 
'username' => 'codeigniter', 
'password' => 'codeigniter', 
'database' => 'codeigniter', 

Chú ý chúng tôi sử dụng DSN, không hostname.

Sau đó, chỉ cần sử dụng của bạn $this->db-> như bạn luôn luôn làm - trình điều khiển PDO sẽ dịch tất cả mọi thứ với các phương pháp PDO

Một ít ngày, nhưng chủ đề là thiếu lời giải thích rõ ràng & tài liệu vì vậy tôi đã viết này - hy vọng nó sẽ giúp làm rõ cho mọi người:

http://codebyjeff.com/blog/2013/03/codeigniter-with-pdo

+1

Liên kết đơn lẻ được coi là câu trả lời không tốt (xem [faq # delete]) vì nó vô nghĩa bởi chính nó và ** tài nguyên đích không được đảm bảo sẽ còn sống trong tương lai **. [Nó sẽ là thích hợp hơn] (http://meta.stackexchange.com/q/8259) để bao gồm các phần thiết yếu của câu trả lời ở đây, và cung cấp liên kết để tham khảo. – j0k

+2

được ghi chú và cập nhật – jmadsen