Php tích hợp với postgresql như thế nào?
Trong chương đầu tiên của hướng dẫn PostgreSQL PHP, chúng tôi sẽ cung cấp các định nghĩa cần thiết. Chúng tôi sẽ chỉ cho bạn cách cài đặt cơ sở dữ liệu PostgreSQL và các gói cần thiết. Các ví dụ sẽ được chạy trên dòng lệnh bằng PHP CLI Show Để chạy được các ví dụ chúng ta cần có ngôn ngữ PHP (dạng PHP CLI) và đã cài đặt cơ sở dữ liệu PostgreSQL. Chúng tôi cũng cần gói $ sudo service postgresql start * Starting PostgreSQL 9.1 database server [ OK ]2 PostgreSQL là một hệ thống cơ sở dữ liệu quan hệ đối tượng mã nguồn mở mạnh mẽ. Nó là một hệ thống quản lý cơ sở dữ liệu đa người dùng. Nó chạy trên nhiều nền tảng bao gồm Linux, FreeBSD, Solaris, Microsoft Windows và Mac OS. PostgreSQL được phát triển bởi PostgreSQL Global Development Group Thiết lập PostgreSQLChúng ta phải cài đặt cơ sở dữ liệu PostgreSQL $ sudo apt-get install postgresql Trên hệ thống dựa trên Debian, chúng ta có thể cài đặt cơ sở dữ liệu PostgreSQL bằng lệnh trên $ sudo update-rc.d -f postgresql remove Removing any system startup links for /etc/init.d/postgresql ... /etc/rc0.d/K21postgresql /etc/rc1.d/K21postgresql /etc/rc2.d/S19postgresql /etc/rc3.d/S19postgresql /etc/rc4.d/S19postgresql /etc/rc5.d/S19postgresql /etc/rc6.d/K21postgresql Nếu chúng ta cài đặt cơ sở dữ liệu PostgreSQL từ các gói, nó sẽ tự động được thêm vào tập lệnh khởi động của hệ điều hành. Nếu chúng ta chỉ học cách làm việc với cơ sở dữ liệu thì không cần thiết phải khởi động cơ sở dữ liệu mỗi khi chúng ta khởi động hệ thống. Lệnh trên xóa mọi liên kết khởi động hệ thống cho cơ sở dữ liệu PostgreSQL $ /etc/init.d/postgresql status Running clusters: 9.1/main $ service postgresql status Running clusters: 9.1/main Chúng tôi kiểm tra xem máy chủ PostgreSQL có đang chạy không. Nếu không, chúng ta cần khởi động máy chủ $ sudo service postgresql start * Starting PostgreSQL 9.1 database server [ OK ] Trên Ubuntu Linux, chúng ta có thể khởi động máy chủ bằng lệnh $ sudo service postgresql start * Starting PostgreSQL 9.1 database server [ OK ]3 $ sudo service postgresql stop [sudo] password for janbodnar: * Stopping PostgreSQL 9.1 database server [ OK ] Chúng tôi sử dụng lệnh $ sudo service postgresql start * Starting PostgreSQL 9.1 database server [ OK ]4 để dừng máy chủ PostgreSQL________số 8 Chúng tôi tạo một vai trò mới trong hệ thống PostgreSQL. Chúng tôi cho phép nó có khả năng tạo cơ sở dữ liệu mới. Vai trò là người dùng trong thế giới cơ sở dữ liệu. Vai trò tách biệt với người dùng hệ điều hành. Chúng tôi đã tạo một người dùng mới mà không có tùy chọn $ sudo service postgresql start * Starting PostgreSQL 9.1 database server [ OK ]5, e. g. chúng tôi chưa chỉ định mật khẩu. Điều này cho phép chúng tôi kết nối với cơ sở dữ liệu với người dùng này mà không cần xác thực mật khẩu. Lưu ý rằng điều này chỉ hoạt động trên localhost $ sudo apt-get install postgresql0 Lệnh $ sudo service postgresql start * Starting PostgreSQL 9.1 database server [ OK ]6 tạo cơ sở dữ liệu PostgreSQL mới với chủ sở hữu janbodnar Ngôn ngữ PHP được biết là chạy trên máy chủ web. Nhưng nó cũng có thể được sử dụng trên dòng lệnh. PHP Command Line Interface (PHP CLI) là thư viện giúp lập trình viên có thể sử dụng PHP trên dòng lệnh. Với PHP CLI, chúng ta có thể xây dựng các ứng dụng GUI bằng PHP-GTK hoặc chúng ta có thể tạo các tập lệnh kiểm tra đơn giản. Trong hướng dẫn này, chúng ta sẽ kết nối với cơ sở dữ liệu PostgreSQL bằng trình thông dịch PHP dòng lệnh $ sudo apt-get install postgresql2 Chúng tôi cài đặt mô-đun PHP CLI trên hệ thống Linux của chúng tôi Gói php5-pssqlphp5-pssql là một gói để làm việc với cơ sở dữ liệu PostgreSQL từ ngôn ngữ PHP. Trên các hệ thống khác, tên gói có thể khác $ sudo apt-get install postgresql3 Chúng tôi khởi chạy lệnh trên để cài đặt gói Xử lý lỗiChúng tôi có một nhận xét nhanh về xử lý lỗi trong PHP. PHP có hỗ trợ tích hợp để báo cáo lỗi. Các chi tiết cụ thể có thể được kiểm soát trong php. tập tin ini. Lưu ý rằng phiên bản PHP CLI có tệp INI riêng. Nó nằm ở $ sudo service postgresql start * Starting PostgreSQL 9.1 database server [ OK ]7 trên hệ thống của chúng tôi Chỉ thị $ sudo service postgresql start * Starting PostgreSQL 9.1 database server [ OK ]8 kiểm soát xem các thông báo lỗi tích hợp có được hiển thị hay không. Trong môi trường phát triển, các thông báo lỗi này được hiển thị. Trong sản xuất, chúng bị đàn áp. Không có lý do gì để hiển thị các thông báo kỹ thuật này cho người dùng. Ngoài ra, nó còn tiềm ẩn nguy cơ bảo mật Nói chung, chúng ta nên ghi các thông báo lỗi cụ thể hơn vào tệp nhật ký. Chỉ thị $ sudo service postgresql start * Starting PostgreSQL 9.1 database server [ OK ]9 kiểm soát xem các lỗi có được ghi lại hay không. $ sudo service postgresql stop [sudo] password for janbodnar: * Stopping PostgreSQL 9.1 database server [ OK ]0 chỉ định tên của tệp nơi các lỗi tập lệnh sẽ được ghi lại. Nếu nó không được đặt, mặc định là $ sudo service postgresql stop [sudo] password for janbodnar: * Stopping PostgreSQL 9.1 database server [ OK ]1 cho PHP CLI Hàm $ sudo service postgresql stop [sudo] password for janbodnar: * Stopping PostgreSQL 9.1 database server [ OK ]2 nhận chuỗi thông báo lỗi cuối cùng của kết nối. Đó là thông báo lỗi tương tự được tạo trong báo cáo lỗi tích hợp Trong các ví dụ của hướng dẫn này, chúng tôi không sử dụng hàm $ sudo service postgresql stop [sudo] password for janbodnar: * Stopping PostgreSQL 9.1 database server [ OK ]2 vì nó sao chép các thông báo lỗi tích hợp. Chúng tôi có các cài đặt sau $ sudo update-rc.d -f postgresql remove Removing any system startup links for /etc/init.d/postgresql ... /etc/rc0.d/K21postgresql /etc/rc1.d/K21postgresql /etc/rc2.d/S19postgresql /etc/rc3.d/S19postgresql /etc/rc4.d/S19postgresql /etc/rc5.d/S19postgresql /etc/rc6.d/K21postgresql1 Chúng tôi hiển thị các lỗi tích hợp; . Các thông báo lỗi cũng được ghi vào một tệp nhật ký được chỉ định. Nếu chúng tôi không muốn thông báo lỗi trên bảng điều khiển, chúng tôi chỉ cần tắt lệnh display_errors $ sudo update-rc.d -f postgresql remove Removing any system startup links for /etc/init.d/postgresql ... /etc/rc0.d/K21postgresql /etc/rc1.d/K21postgresql /etc/rc2.d/S19postgresql /etc/rc3.d/S19postgresql /etc/rc4.d/S19postgresql /etc/rc5.d/S19postgresql /etc/rc6.d/K21postgresql0 Trong script, chúng ta sử dụng hàm $ sudo service postgresql stop [sudo] password for janbodnar: * Stopping PostgreSQL 9.1 database server [ OK ]4 để hiển thị thông báo lỗi đơn giản, dễ hiểu. Các chi tiết cụ thể hơn được lưu vào tệp nhật ký. Hàm $ sudo service postgresql stop [sudo] password for janbodnar: * Stopping PostgreSQL 9.1 database server [ OK ]4 cũng kết thúc tập lệnh Phiên bảnTrong ví dụ mã đầu tiên, chúng ta sẽ lấy phiên bản của cơ sở dữ liệu PostgreSQL $ sudo update-rc.d -f postgresql remove Removing any system startup links for /etc/init.d/postgresql ... /etc/rc0.d/K21postgresql /etc/rc1.d/K21postgresql /etc/rc2.d/S19postgresql /etc/rc3.d/S19postgresql /etc/rc4.d/S19postgresql /etc/rc5.d/S19postgresql /etc/rc6.d/K21postgresql1 Trong tập lệnh PHP ở trên, chúng tôi kết nối với cơ sở dữ liệu $ sudo service postgresql stop [sudo] password for janbodnar: * Stopping PostgreSQL 9.1 database server [ OK ]6 đã tạo trước đó. Chúng tôi thực thi một câu lệnh SQL trả về phiên bản của cơ sở dữ liệu PostgreSQLQuảng cáo $ sudo update-rc.d -f postgresql remove Removing any system startup links for /etc/init.d/postgresql ... /etc/rc0.d/K21postgresql /etc/rc1.d/K21postgresql /etc/rc2.d/S19postgresql /etc/rc3.d/S19postgresql /etc/rc4.d/S19postgresql /etc/rc5.d/S19postgresql /etc/rc6.d/K21postgresql2 Đây là các biến chuỗi kết nối. Để tạo kết nối đến cơ sở dữ liệu PostgreSQL, chúng tôi phải cung cấp tên máy chủ, tên người dùng và mật khẩu và tên cơ sở dữ liệu $ sudo update-rc.d -f postgresql remove Removing any system startup links for /etc/init.d/postgresql ... /etc/rc0.d/K21postgresql /etc/rc1.d/K21postgresql /etc/rc2.d/S19postgresql /etc/rc3.d/S19postgresql /etc/rc4.d/S19postgresql /etc/rc5.d/S19postgresql /etc/rc6.d/K21postgresql3 Chúng tôi kết nối với máy chủ cơ sở dữ liệu. Nếu không thể tạo kết nối, hàm $ sudo service postgresql stop [sudo] password for janbodnar: * Stopping PostgreSQL 9.1 database server [ OK ]4 sẽ chấm dứt tập lệnh và in thông báo lỗi ra bàn điều khiển. Hàm $ sudo service postgresql stop [sudo] password for janbodnar: * Stopping PostgreSQL 9.1 database server [ OK ]8 trả về tài nguyên kết nối, tài nguyên này sẽ được sử dụng sau này với các hàm mô-đun khác $ sudo update-rc.d -f postgresql remove Removing any system startup links for /etc/init.d/postgresql ... /etc/rc0.d/K21postgresql /etc/rc1.d/K21postgresql /etc/rc2.d/S19postgresql /etc/rc3.d/S19postgresql /etc/rc4.d/S19postgresql /etc/rc5.d/S19postgresql /etc/rc6.d/K21postgresql4 Câu lệnh SQL này chọn phiên bản của cơ sở dữ liệu PostgreSQL $ sudo update-rc.d -f postgresql remove Removing any system startup links for /etc/init.d/postgresql ... /etc/rc0.d/K21postgresql /etc/rc1.d/K21postgresql /etc/rc2.d/S19postgresql /etc/rc3.d/S19postgresql /etc/rc4.d/S19postgresql /etc/rc5.d/S19postgresql /etc/rc6.d/K21postgresql5 Truy vấn được thực hiện với hàm $ sudo service postgresql stop [sudo] password for janbodnar: * Stopping PostgreSQL 9.1 database server [ OK ]9 $ sudo update-rc.d -f postgresql remove Removing any system startup links for /etc/init.d/postgresql ... /etc/rc0.d/K21postgresql /etc/rc1.d/K21postgresql /etc/rc2.d/S19postgresql /etc/rc3.d/S19postgresql /etc/rc4.d/S19postgresql /etc/rc5.d/S19postgresql /etc/rc6.d/K21postgresql6 Chúng tôi lấy dữ liệu từ kết quả trả về $ sudo update-rc.d -f postgresql remove Removing any system startup links for /etc/init.d/postgresql ... /etc/rc0.d/K21postgresql /etc/rc1.d/K21postgresql /etc/rc2.d/S19postgresql /etc/rc3.d/S19postgresql /etc/rc4.d/S19postgresql /etc/rc5.d/S19postgresql /etc/rc6.d/K21postgresql7 Chúng tôi in dữ liệu mà chúng tôi đã lấy ra bàn điều khiển. Dữ liệu được trả về dưới dạng một mảng PHP. Phần tử đầu tiên của mảng là chuỗi chúng ta đang tìm kiếm $ sudo update-rc.d -f postgresql remove Removing any system startup links for /etc/init.d/postgresql ... /etc/rc0.d/K21postgresql /etc/rc1.d/K21postgresql /etc/rc2.d/S19postgresql /etc/rc3.d/S19postgresql /etc/rc4.d/S19postgresql /etc/rc5.d/S19postgresql /etc/rc6.d/K21postgresql8 Đóng kết nối với cơ sở dữ liệu bằng hàm $ sudo -u postgres createuser janbodnar Shall the new role be a superuser? (y/n) n Shall the new role be allowed to create databases? (y/n) y Shall the new role be allowed to create more new roles? (y/n) n0 $ sudo update-rc.d -f postgresql remove Removing any system startup links for /etc/init.d/postgresql ... /etc/rc0.d/K21postgresql /etc/rc1.d/K21postgresql /etc/rc2.d/S19postgresql /etc/rc3.d/S19postgresql /etc/rc4.d/S19postgresql /etc/rc5.d/S19postgresql /etc/rc6.d/K21postgresql9 Chạy phiên bản. tập lệnh php Chúng tôi sẽ tạo một bảng ô tô và chèn một số hàng vào đó $ sudo update-rc.d -f postgresql remove Removing any system startup links for /etc/init.d/postgresql ... /etc/rc0.d/K21postgresql /etc/rc1.d/K21postgresql /etc/rc2.d/S19postgresql /etc/rc3.d/S19postgresql /etc/rc4.d/S19postgresql /etc/rc5.d/S19postgresql /etc/rc6.d/K21postgresql1 Đoạn script trên tạo một bảng ________ 81 và chèn 8 hàng vào bảng Quảng cáo$ /etc/init.d/postgresql status Running clusters: 9.1/main $ service postgresql status Running clusters: 9.1/main1 Chúng tôi bỏ bảng ô tô nếu nó đã tồn tại. Hàm $ sudo service postgresql stop [sudo] password for janbodnar: * Stopping PostgreSQL 9.1 database server [ OK ]9 thực hiện truy vấn đã cho trên kết nối cơ sở dữ liệu đã chỉ định $ /etc/init.d/postgresql status Running clusters: 9.1/main $ service postgresql status Running clusters: 9.1/main2 Câu lệnh SQL này tạo một bảng ô tô mới. Bảng có ba cột $ /etc/init.d/postgresql status Running clusters: 9.1/main $ service postgresql status Running clusters: 9.1/main3 Chúng tôi đang chèn hai chiếc xe vào bàn $ /etc/init.d/postgresql status Running clusters: 9.1/main $ service postgresql status Running clusters: 9.1/main4 Kết nối với cơ sở dữ liệu bị đóng $ /etc/init.d/postgresql status Running clusters: 9.1/main $ service postgresql status Running clusters: 9.1/main5 Chúng tôi xác minh dữ liệu bằng văn bản bằng công cụ psql quảng cáobáo cáo chuẩn bịBây giờ chúng ta sẽ quan tâm đến các tuyên bố đã chuẩn bị. Khi chúng tôi viết các câu lệnh đã chuẩn bị, chúng tôi sử dụng các trình giữ chỗ thay vì viết trực tiếp các giá trị vào các câu lệnh. Báo cáo được chuẩn bị tăng tính bảo mật và hiệu suất Một câu lệnh đã chuẩn bị là một đối tượng phía máy chủ có thể được sử dụng để tối ưu hóa hiệu suất. Khi một truy vấn được chuẩn bị, nó được phân tích cú pháp, viết lại và lên kế hoạch. Sau đó, câu lệnh đã chuẩn bị chỉ cần được thực thi. Do đó, các giai đoạn phân tích cú pháp, viết lại và lập kế hoạch chỉ được thực hiện một lần, thay vì mỗi lần câu lệnh được thực thi. Các câu lệnh đã chuẩn bị chỉ tồn tại trong khoảng thời gian của phiên cơ sở dữ liệu hiện tại. Khi phiên kết thúc, câu lệnh đã chuẩn bị bị quên, vì vậy nó phải được tạo lại trước khi sử dụng lại $ /etc/init.d/postgresql status Running clusters: 9.1/main $ service postgresql status Running clusters: 9.1/main6 Chúng tôi thêm một hàng vào bảng ô tô. Chúng tôi sử dụng một truy vấn đã chuẩn bị Quảng cáo$ /etc/init.d/postgresql status Running clusters: 9.1/main $ service postgresql status Running clusters: 9.1/main7 Chúng tôi có ba biến sẽ được sử dụng để tạo truy vấn. Những giá trị này có thể đến e. g. từ một mẫu web $ /etc/init.d/postgresql status Running clusters: 9.1/main $ service postgresql status Running clusters: 9.1/main8 Đây là một truy vấn SQL với các trình giữ chỗ $ sudo -u postgres createuser janbodnar Shall the new role be a superuser? (y/n) n Shall the new role be allowed to create databases? (y/n) y Shall the new role be allowed to create more new roles? (y/n) n3, $ sudo -u postgres createuser janbodnar Shall the new role be a superuser? (y/n) n Shall the new role be allowed to create databases? (y/n) y Shall the new role be allowed to create more new roles? (y/n) n4 và $ sudo -u postgres createuser janbodnar Shall the new role be a superuser? (y/n) n Shall the new role be allowed to create databases? (y/n) y Shall the new role be allowed to create more new roles? (y/n) n5. Các trình giữ chỗ sẽ được lấp đầy sau $ /etc/init.d/postgresql status Running clusters: 9.1/main $ service postgresql status Running clusters: 9.1/main9 Ở đây chúng tôi chuẩn bị một truy vấn bằng cách gọi hàm $ sudo -u postgres createuser janbodnar Shall the new role be a superuser? (y/n) n Shall the new role be allowed to create databases? (y/n) y Shall the new role be allowed to create more new roles? (y/n) n6. Tham số thứ hai của hàm là tên của câu lệnh đã chuẩn bị. Nó phải là duy nhất cho mỗi kết nối. Các câu lệnh đã chuẩn bị nhanh hơn và bảo vệ chống lại các cuộc tấn công SQL injection $ sudo service postgresql start * Starting PostgreSQL 9.1 database server [ OK ]0 Hàm $ sudo -u postgres createuser janbodnar Shall the new role be a superuser? (y/n) n Shall the new role be allowed to create databases? (y/n) y Shall the new role be allowed to create more new roles? (y/n) n7 gửi yêu cầu thực thi câu lệnh đã chuẩn bị với các tham số đã cho và chờ kết quả. Các giá trị được liên kết với trình giữ chỗ PHP hỗ trợ kết nối PostgreSQL như thế nào?Thực hiện kết nối. tập lệnh php từ trình duyệt tại http. // localhost/kết nối. php . Tập lệnh PHP bên dưới là một tập lệnh duy nhất bạn có thể sử dụng để thực hiện kiểm tra kết nối PHP, kiểm tra trạng thái truy vấn và tìm nạp dữ liệu từ cơ sở dữ liệu.
PHP có hoạt động với PostgreSQL không?PHP cung cấp nhiều hàm để làm việc trực tiếp với cơ sở dữ liệu PostgreSQL . Để kết nối với PostgreSQL bằng các hàm gốc, hãy làm theo các bước sau. Sử dụng mã PHP sau để kết nối với PostgreSQL và chọn cơ sở dữ liệu.
Làm cách nào tôi có thể kết nối cơ sở dữ liệu PostgreSQL bằng PHP?Kết nối với cơ sở dữ liệu
. 0. 0. 1"; $port = "port = 5432"; $dbname = "dbname = testdb"; $credentials = "user = postgres password=pass123"; $db = pg_connect( "$host $port $dbname $credentials" );
Phần mở rộng PHP nào cần được bật cho PostgreSQL?Phần mở rộng PHP nào cần được bật cho PostgreSQL? . 4 hoặc cao hơn là bắt buộc. 5. 4, 5. 5, 5. 6, 7. 0 , Bạn cần chọn giữa tiện ích mở rộng PostgreSQL PHP và tiện ích mở rộng PostgreSQL PDO. Bạn cần kích hoạt tiện ích mở rộng bạn đã chọn. |