2009-10-07 25 views
9

Tôi đã sử dụng gói lê trong php trong nhiều năm. Tôi đang trong quá trình nâng cấp/di chuyển một trang web sử dụng gói lê MDB2 và nó chưa được cập nhật cho PHP 5.3.X.Thay thế cho PEAR: MDB2 trên PHP 5.3

Trong 5.3, MDB2 trả lại các lỗi gây phiền nhiễu mới.

Unknown: Assigning the return value of new by reference is deprecated in /usr/local/lib/php/MDB2.php on line 390 

Tôi biết tôi có thể thay đổi cài đặt báo cáo lỗi của mình để loại bỏ chúng, nhưng tôi không muốn thực hiện bất kỳ ngoại lệ nào. Dù sao, Có ai khác sử dụng MDB2 những ngày này và có một giải pháp? Có các gói cơ sở dữ liệu tương tự mà bạn đề xuất không?

Trả lời

9

Tôi chắc chắn là sẽ đi cho một ORM, ít nhất là nếu bạn đang làm việc trên một dự án lớn, mà bạn không muốn sử dụng mysqli_* hoặc PDO chức năng/phương pháp trực tiếp - Doctrine là phát triển/sử dụng nhiều nhất, ngày nay (Đây là ORM mặc định của khung công tác symfony, và có thể được tích hợp trong Zend Framework khá dễ dàng).

Về lỗi E_DEPRECATED, mặc dù: PHP 5.3 khá trẻ và nhiều thư viện/phần mềm/dự án chưa được điều chỉnh - có thể bạn sẽ có rất nhiều thư trong vài tháng tới :-(

.
+0

Vâng tôi đồng ý về sự chưa trưởng thành của PHP 5.3, và tôi hiểu rằng sẽ mất một thời gian để tất cả chúng tôi cập nhật mã của chúng tôi, nhưng tôi không nghĩ rằng MDB2 sẽ được cập nhật (trông bị bỏ rơi với tôi). Học thuyết trông tuyệt vời. Cảm ơn. – mattweg

+0

Bạn được chào đón :-) Hãy vui vẻ với nó! –

7

tôi sẽ bình luận về điều này, vì nó mọc lên cao trên kết quả tìm kiếm của Google cho các vấn đề

tôi đã liên lạc với nhà phát triển đội MDB2, người đã nói:

xin vui lòng kiểm tra một bản sao của MDB2 từ SVN, nó hoàn toàn tương thích với PHP5.3, với nhiều cải tiến hiệu suất S. Tôi hiện đang chờ đợi một số bản sửa lỗi cho trình điều khiển máy chủ SQL mới (Microsoft đang làm việc trên nó trong tuần này), sau đó tôi sẽ đẩy một bản phát hành ổn định mới.

(Chỉnh sửa, 4 năm sau: Đây là không còn đúng, không làm điều này)

3

Tôi chỉ cần đi và tải về phiên bản mới nhất của MDB2 (MDB2-2.5.0b3) từ đây http://pear.php.net/package/MDB2/download và nó đã loại bỏ tất cả các lỗi của tôi. Dường như hoạt động tốt với phiên bản PHP 5.3.5

0

Tôi nhận được tất cả các lỗi và cảnh báo không được chấp nhận, sử dụng MDB2 và PHP 5.3, nhưng tôi đã nhận được một số lỗi thực sự lạ trên MDB2, . Môi trường của tôi là CentOS, PHP 5.3, MDB2-2.4.1, MySQL 5.0.77

Bất cứ lúc nào, tôi sử dụng autoExecute 2x trong tệp php, lần 2 không thành công (tương tự nếu tôi cố gắng sử dụng chuẩn bị và sau đó thực thi). Tôi đã đăng nhập vào nhật ký truy vấn MySQL của mình và trong khi một INSERT thành công sẽ hiển thị các giá trị, một INSERT không thành công sẽ luôn có chỉ các trình giữ chỗ. tức là: giá trị (?,?,?,?). Và MDB2_Error sẽ luôn luôn đề cập đến đệ quy

lastInsertId() không bao giờ làm việc với các bảng MySQL và các lĩnh vực autoincrement (với tài xế mysqli) tôi đã đủ gỡ lỗi trên nó, đi sâu vào các cuộc gọi stack, và kết quả nhận của để quấn trong các Object, bạn không thể biết nó là gì, cho đến cuối cùng. Tôi rất muốn được sử dụng MDB2 hơn, nhưng trên thực tế, tôi đã phải quay trở lại mysql thẳng, nhiều lần vì những vấn đề này. Có thể Lucas hoặc các nhà phát triển khác có thể làm sáng tỏ chủ đề này, hoặc chỉ cho chúng tôi đi đúng hướng.

+1

http://pear.php.net/bugs/bug.php?id=18050 nói rằng bạn cần phải nâng cấp phiên bản MDB2 của bạn từ 2.4.1 lên 2.5.0b3 – MECU

9

Bạn cũng có thể nâng cấp lên phiên bản beta 3 qua dòng lệnh

pear upgrade MDB2-beta 
pear upgrade MDB2_Driver_Mysql-beta 

Giải thích về lý do tại sao phiên bản ổn định hiện nay là không phù hợp với chặt chẽ báo cáo lỗi: http://pear.php.net/bugs/bug.php?id=9756

Nguồn cho lệnh:
http://pear.php.net/bugs/bug.php?id=18050

+0

Chỉ cần ném điều này ra khỏi đó - Tôi đã cập nhật lên MDB2-beta bằng cách sử dụng các lệnh ở trên và trang web của tôi bắt đầu vi phạm mà không bị lỗi. Vẫn đang cố gắng tìm ra cách để khắc phục sự cố với khách hàng đang nghi ngờ hiện đang lo lắng về trang web đang bị phá vỡ. –

+0

Edit: ok nó đã được thực sự từ một lỗi Fatal Error trong Mail/Queue đã được giới thiệu gần đây. Tôi cập nhật các gói lê trong khi tôi ở đó và đó là cách tôi giới thiệu lỗi. Có vẻ như bản vá chưa được cập nhật nhưng vẫn đủ dễ dàng để tự chỉnh sửa tệp. –

0

Nếu bạn chỉ sử dụng MDB2 cho MySQL, bạn có thể thay thế và giữ phần lớn các chức năng với MDBDid: http://azure-dev.kiao.net/648-mdb2 Bạn sẽ chỉ có ít mã để thích ứng.