Bạn sẽ thực thi câu lệnh PostgreSQL trong PHP như thế nào?

$conn = pg_pconnect("dbname=publisher");
if (!$conn) {
  echo "An error occurred.\n";
  exit;
}

$result = pg_query($conn, "SELECT author, email FROM authors");
if (!$result) {
  echo "An error occurred.\n";
  exit;
}

while ($row = pg_fetch_row($result)) {
  echo "Author: $row[0]  E-mail: $row[1]";
  echo "
\n";
}

?>

Bài viết này là một đoạn trích của cuốn sách, Bắt đầu cơ sở dữ liệu với PostgreSQL (Wrox Press, 2001), và được in lại ở đây theo sự cho phép

Gần đây, đã có một xu hướng mạnh mẽ hướng tới việc cung cấp giao diện dựa trên web cho cơ sở dữ liệu trực tuyến. Có một số lý do ủng hộ phong trào này, bao gồm

  • Trình duyệt web là giao diện phổ biến và quen thuộc để duyệt dữ liệu
  • Các ứng dụng dựa trên web có thể dễ dàng được tích hợp vào một trang web hiện có
  • Giao diện web (HTML) dễ dàng tạo và sửa đổi

Trong chương này, chúng ta sẽ khám phá các phương pháp khác nhau để truy cập PostgreSQL từ PHP. PHP là ngôn ngữ kịch bản đa nền tảng, phía máy chủ để viết các ứng dụng dựa trên web. Nó cho phép bạn nhúng logic chương trình vào các trang HTML, cho phép bạn phục vụ các trang web động. PHP cho phép chúng tôi tạo giao diện người dùng dựa trên web tương tác với PostgreSQL

Trong chương này, chúng ta sẽ ít nhất có hiểu biết cơ bản về ngôn ngữ PHP. Nếu bạn hoàn toàn không quen thuộc với PHP, trước tiên bạn có thể muốn khám phá một số tài nguyên sau

  • Trang chủ của PHP http. //www. php. net
  • Bắt đầu PHP 4, Wankyu Choi, Allan Kent, Ganesh Prasad và Chris Ullman, với Jon Blank và Sean Cazzell, Wrox Press (ISBN 1-861003-73-0)

Có nhiều trường phái tư duy khác nhau liên quan đến các phương pháp phát triển PHP. Nó không nằm trong phạm vi của cuốn sách này để thảo luận về chúng. Thay vào đó, chúng tôi sẽ tập trung vào việc thiết kế các tập lệnh PHP để sử dụng hiệu quả giao diện PostgreSQL của PHP

Lưu ý rằng chúng tôi sẽ tập trung vào phiên bản PHP 4. Mặc dù hầu hết các ví dụ và mô tả mã sau đây sẽ áp dụng cho các phiên bản PHP cũ hơn, nhưng có thể có một số khác biệt về chức năng. Ngoài ra, giả định rằng tất cả các đoạn mã đều nằm trong ngữ cảnh của phạm vi PHP hợp lệ (thường có nghĩa là với các thẻ

<?php   
$db_handle = pg_connect("dbname=bpsimple");  
$query = "SELECT * FROM item";  
$result = pg_exec($db_handle, $query);  
echo "Number of rows: " . pg_numrows($result);  
pg_freeresult($result);  
pg_close($db_handle);  
?>
2), trừ khi có quy định khác

Thêm hỗ trợ PostgreSQL vào PHP

Trước khi bạn có thể bắt đầu phát triển các tập lệnh PHP có giao diện với cơ sở dữ liệu PostgreSQL, bạn sẽ cần hỗ trợ PostgreSQL trong bản cài đặt PHP của mình

Nếu bạn không chắc liệu bản cài đặt PHP hiện tại của mình đã có hỗ trợ PostgreSQL hay chưa, hãy tạo một tập lệnh đơn giản có tên

<?php   
$db_handle = pg_connect("dbname=bpsimple");  
$query = "SELECT * FROM item";  
$result = pg_exec($db_handle, $query);  
echo "Number of rows: " . pg_numrows($result);  
pg_freeresult($result);  
pg_close($db_handle);  
?>
3 (tập lệnh này sẽ được đặt trong thư mục gốc tài liệu của máy chủ web của bạn), chứa dòng sau

<?php  
phpinfo();  
?>

Kiểm tra đầu ra của tập lệnh này trong trình duyệt web của bạn. Nếu hỗ trợ PostgreSQL đã được bao gồm, đầu ra sẽ chứa một phần tương tự như sau

Bạn sẽ thực thi câu lệnh PostgreSQL trong PHP như thế nào?
Nếu cài đặt PHP của bạn đã có hỗ trợ PostgreSQL, bạn có thể tiếp tục đến phần tiếp theo

Nếu bạn có mã nguồn PHP, việc thêm hỗ trợ PostgreSQL khá dễ dàng. Chỉ cần chuyển tùy chọn

<?php   
$db_handle = pg_connect("dbname=bpsimple");  
$query = "SELECT * FROM item";  
$result = pg_exec($db_handle, $query);  
echo "Number of rows: " . pg_numrows($result);  
pg_freeresult($result);  
pg_close($db_handle);  
?>
4 cho tập lệnh
<?php   
$db_handle = pg_connect("dbname=bpsimple");  
$query = "SELECT * FROM item";  
$result = pg_exec($db_handle, $query);  
echo "Number of rows: " . pg_numrows($result);  
pg_freeresult($result);  
pg_close($db_handle);  
?>
5

$ ./configure --with-pgsql

Bạn có thể tùy chọn chỉ định thư mục cài đặt PostgreSQL của mình nếu

<?php   
$db_handle = pg_connect("dbname=bpsimple");  
$query = "SELECT * FROM item";  
$result = pg_exec($db_handle, $query);  
echo "Number of rows: " . pg_numrows($result);  
pg_freeresult($result);  
pg_close($db_handle);  
?>
5script không thể tự định vị thư mục đó

$ ./configure --with-pgsql=/var/lib/pgsql

Hãy nhớ rằng bạn có thể cần chuyển các tùy chọn bổ sung cho

<?php   
$db_handle = pg_connect("dbname=bpsimple");  
$query = "SELECT * FROM item";  
$result = pg_exec($db_handle, $query);  
echo "Number of rows: " . pg_numrows($result);  
pg_freeresult($result);  
pg_close($db_handle);  
?>
5script tùy thuộc vào yêu cầu xây dựng của bạn. Ví dụ: để xây dựng PHP có hỗ trợ PostgreSQL, LDAP và XML, bạn sẽ sử dụng dòng lệnh sau

$ ./configure --with-pgsql --with-imap --enable-xml

Tham khảo tài liệu PHP (cụ thể là tài liệu

<?php   
$db_handle = pg_connect("dbname=bpsimple");  
$query = "SELECT * FROM item";  
$result = pg_exec($db_handle, $query);  
echo "Number of rows: " . pg_numrows($result);  
pg_freeresult($result);  
pg_close($db_handle);  
?>
8 đi kèm với bản phân phối PHP) để biết thêm các tùy chọn biên dịch và hướng dẫn cài đặt. Bạn cũng có thể tìm thấy chúng tại http. //www. php. net/manual/en/html/cài đặt. html

Sử dụng API PHP cho PostgreSQL

Tất cả các tương tác với cơ sở dữ liệu PostgreSQL được thực hiện thông qua tiện ích mở rộng PostgreSQL, đây là một bộ hàm PHP toàn diện. Để biết danh sách đầy đủ các chức năng và thông tin thêm về chức năng đó, hãy tham khảo http. //www. php. mạng/thủ công/ref. postgresql. php

Một tập lệnh PHP đơn giản mở kết nối tới cơ sở dữ liệu PostgreSQL, chọn một số hàng, in số hàng trong tập kết quả và đóng kết nối sẽ giống như thế này

<?php   
$db_handle = pg_connect("dbname=bpsimple");  
$query = "SELECT * FROM item";  
$result = pg_exec($db_handle, $query);  
echo "Number of rows: " . pg_numrows($result);  
pg_freeresult($result);  
pg_close($db_handle);  
?>

Như bạn có thể thấy, việc tương tác với cơ sở dữ liệu từ bên trong PHP khá đơn giản. Bây giờ chúng ta sẽ đề cập sâu hơn về các khía cạnh khác nhau của tiện ích mở rộng PHP PostgreSQL

kết nối cơ sở dữ liệu

Trước khi bạn có thể tương tác với cơ sở dữ liệu, trước tiên bạn phải mở một kết nối với nó. Mỗi kết nối được đại diện bởi một biến duy nhất (chúng tôi sẽ gọi biến này là điều khiển kết nối). PHP cho phép bạn mở nhiều kết nối cùng một lúc, mỗi kết nối có xử lý kết nối riêng

<?php   
$db_handle = pg_connect("dbname=bpsimple");  
$query = "SELECT * FROM item";  
$result = pg_exec($db_handle, $query);  
echo "Number of rows: " . pg_numrows($result);  
pg_freeresult($result);  
pg_close($db_handle);  
?>
9

Các kết nối cơ sở dữ liệu được mở bằng hàm

<?php   
$db_handle = pg_connect("dbname=bpsimple");  
$query = "SELECT * FROM item";  
$result = pg_exec($db_handle, $query);  
echo "Number of rows: " . pg_numrows($result);  
pg_freeresult($result);  
pg_close($db_handle);  
?>
9. Hàm này lấy một chuỗi kết nối làm đối số duy nhất của nó và trả về một điều khiển kết nối cơ sở dữ liệu. Đây là một ví dụ

$db_handle = pg_connect("dbname=bpsimple user=jon");

Bạn có thể tạo tên người dùng của riêng mình và sử dụng nó để kết nối với cơ sở dữ liệu như

$db_handle = pg_connect("dbname=bpsimple user=jon");
1

Nếu bạn muốn sử dụng các biến PHP, hãy nhớ bao quanh chuỗi kết nối trong dấu ngoặc kép thay vì dấu ngoặc đơn

$db_handle = pg_connect("dbname=$dbname user=$dbuser");

Tất cả các tham số kết nối PostgreSQL tiêu chuẩn đều có sẵn trong chuỗi kết nối. Các tùy chọn được sử dụng phổ biến nhất và ý nghĩa của chúng được liệt kê bên dưới

  • $db_handle = pg_connect("dbname=bpsimple user=jon");
    2. Cơ sở dữ liệu để kết nối (Mặc định.
    $db_handle = pg_connect("dbname=bpsimple user=jon");
    3)
  • $db_handle = pg_connect("dbname=bpsimple user=jon");
    4. Tên người dùng để sử dụng khi kết nối (Mặc định.
    $db_handle = pg_connect("dbname=bpsimple user=jon");
    5)
  • $db_handle = pg_connect("dbname=bpsimple user=jon");
    6. Mật khẩu cho người dùng được chỉ định (Mặc định.
    $db_handle = pg_connect("dbname=bpsimple user=jon");
    7 hoặc không)
  • $db_handle = pg_connect("dbname=bpsimple user=jon");
    8. Tên của máy chủ để kết nối với (Mặc định.
    $db_handle = pg_connect("dbname=bpsimple user=jon");
    9 hoặc
    $db_handle = pg_connect("dbname=$dbname user=$dbuser");
    0)
  • $db_handle = pg_connect("dbname=$dbname user=$dbuser");
    1. Địa chỉ IP của máy chủ để kết nối (Mặc định.
    $db_handle = pg_connect("dbname=$dbname user=$dbuser");
    2)
  • $db_handle = pg_connect("dbname=$dbname user=$dbuser");
    3. Cổng TCP/IP để kết nối trên máy chủ (Mặc định.
    $db_handle = pg_connect("dbname=$dbname user=$dbuser");
    4 hoặc
    $db_handle = pg_connect("dbname=$dbname user=$dbuser");
    5)

Nếu nỗ lực kết nối không thành công, hàm

<?php   
$db_handle = pg_connect("dbname=bpsimple");  
$query = "SELECT * FROM item";  
$result = pg_exec($db_handle, $query);  
echo "Number of rows: " . pg_numrows($result);  
pg_freeresult($result);  
pg_close($db_handle);  
?>
9 sẽ trả về false. Do đó, các nỗ lực kết nối không thành công có thể được phát hiện bằng cách kiểm tra giá trị trả về

<?php   
$db_handle = pg_connect("dbname=bpsimple");  
if ($db_handle) {  
   echo 'Connection attempt succeeded.';  
} else {  
   echo 'Connection attempt failed.';  
}  
pg_close($db_handle);  
?>

Như đã đề cập ở trên, PHP hỗ trợ nhiều kết nối cơ sở dữ liệu đồng thời

$db_handle1 = pg_connect("dbname=database1");   
$db_handle2 = pg_connect("dbname=database2");

Kết nối liên tục

PHP cũng hỗ trợ các kết nối cơ sở dữ liệu liên tục. Các kết nối liên tục được giữ mở sau thời gian tồn tại của yêu cầu trang, trong khi các kết nối thông thường bị đóng ở cuối yêu cầu trang. PHP duy trì một danh sách các kết nối hiện đang mở và nếu một yêu cầu được tạo cho một kết nối cơ sở dữ liệu lưu trữ lâu dài mới có cùng tham số kết nối với một trong các kết nối đang mở trong danh sách này, thay vào đó, một điều khiển cho kết nối đã mở sẽ được trả lại. Điều này có lợi thế là tiết kiệm tập lệnh chi phí bổ sung để tạo kết nối cơ sở dữ liệu mới khi một tập lệnh phù hợp đã tồn tại trong nhóm kết nối

$db_handle = pg_connect("dbname=$dbname user=$dbuser");
7

Để mở kết nối liên tục tới PostgreSQL, hãy sử dụng hàm

$db_handle = pg_connect("dbname=$dbname user=$dbuser");
7. Chức năng này hoạt động chính xác như chức năng
<?php   
$db_handle = pg_connect("dbname=bpsimple");  
$query = "SELECT * FROM item";  
$result = pg_exec($db_handle, $query);  
echo "Number of rows: " . pg_numrows($result);  
pg_freeresult($result);  
pg_close($db_handle);  
?>
9 được mô tả ở trên, ngoại trừ việc nó yêu cầu kết nối liên tục, nếu có sẵn

Tuy nhiên, bạn nên sử dụng các kết nối liên tục một cách cẩn thận. Việc lạm dụng các kết nối liên tục có thể dẫn đến một số lượng lớn các kết nối cơ sở dữ liệu nhàn rỗi đến cơ sở dữ liệu của bạn. Việc sử dụng kết nối liên tục lý tưởng là trong những trường hợp nhiều trang cũng sẽ yêu cầu cùng một loại kết nối cơ sở dữ liệu (có nghĩa là một trang chứa các tham số kết nối giống nhau). Trong những trường hợp như vậy, các kết nối liên tục giúp tăng hiệu suất đáng kể

Đóng kết nối

<?php   
$db_handle = pg_connect("dbname=bpsimple");  
if ($db_handle) {  
   echo 'Connection attempt succeeded.';  
} else {  
   echo 'Connection attempt failed.';  
}  
pg_close($db_handle);  
?>
0

Các kết nối cơ sở dữ liệu có thể được đóng một cách rõ ràng bằng hàm

<?php   
$db_handle = pg_connect("dbname=bpsimple");  
if ($db_handle) {  
   echo 'Connection attempt succeeded.';  
} else {  
   echo 'Connection attempt failed.';  
}  
pg_close($db_handle);  
?>
0

pg_close($db_handle);

Tuy nhiên, có một vài điều cần được chỉ ra ở đây. Thứ nhất, trong trường hợp kết nối liên tục, chức năng này sẽ không thực sự đóng kết nối. Thay vào đó, kết nối sẽ chỉ được trả về nhóm kết nối cơ sở dữ liệu. Thứ hai, PHP sẽ tự động đóng mọi kết nối cơ sở dữ liệu không liên tục đang mở khi kết thúc quá trình thực thi tập lệnh. Cả hai điểm này làm cho việc gọi

<?php   
$db_handle = pg_connect("dbname=bpsimple");  
if ($db_handle) {  
   echo 'Connection attempt succeeded.';  
} else {  
   echo 'Connection attempt failed.';  
}  
pg_close($db_handle);  
?>
0 hầu như không cần thiết, nhưng chức năng này được bao gồm để hoàn thiện và dành cho những trường hợp thực sự cần đóng kết nối ngay lập tức

Nếu xử lý kết nối được cung cấp không hợp lệ, thì

<?php   
$db_handle = pg_connect("dbname=bpsimple");  
if ($db_handle) {  
   echo 'Connection attempt succeeded.';  
} else {  
   echo 'Connection attempt failed.';  
}  
pg_close($db_handle);  
?>
0 sẽ trả về false. Nếu không,
<?php   
$db_handle = pg_connect("dbname=bpsimple");  
if ($db_handle) {  
   echo 'Connection attempt succeeded.';  
} else {  
   echo 'Connection attempt failed.';  
}  
pg_close($db_handle);  
?>
0 sẽ trả về true khi thành công

Thông tin kết nối

PHP cung cấp một số chức năng đơn giản để truy xuất thông tin về kết nối cơ sở dữ liệu hiện tại dựa trên xử lý kết nối được cung cấp. Các chức năng như vậy bao gồm

  • <?php   
    $db_handle = pg_connect("dbname=bpsimple");  
    if ($db_handle) {  
       echo 'Connection attempt succeeded.';  
    } else {  
       echo 'Connection attempt failed.';  
    }  
    pg_close($db_handle);  
    ?>
    5 Trả về tên của cơ sở dữ liệu hiện tại
  • <?php   
    $db_handle = pg_connect("dbname=bpsimple");  
    if ($db_handle) {  
       echo 'Connection attempt succeeded.';  
    } else {  
       echo 'Connection attempt failed.';  
    }  
    pg_close($db_handle);  
    ?>
    6 Trả về tên máy chủ được liên kết với kết nối hiện tại
  • <?php   
    $db_handle = pg_connect("dbname=bpsimple");  
    if ($db_handle) {  
       echo 'Connection attempt succeeded.';  
    } else {  
       echo 'Connection attempt failed.';  
    }  
    pg_close($db_handle);  
    ?>
    7 Trả về các tùy chọn được liên kết với kết nối hiện tại
  • <?php   
    $db_handle = pg_connect("dbname=bpsimple");  
    if ($db_handle) {  
       echo 'Connection attempt succeeded.';  
    } else {  
       echo 'Connection attempt failed.';  
    }  
    pg_close($db_handle);  
    ?>
    8 Trả về số cổng của kết nối hiện tại
  • <?php   
    $db_handle = pg_connect("dbname=bpsimple");  
    if ($db_handle) {  
       echo 'Connection attempt succeeded.';  
    } else {  
       echo 'Connection attempt failed.';  
    }  
    pg_close($db_handle);  
    ?>
    9 Trả về tên TTY được liên kết với kết nối hiện tại

Tất cả các chức năng này yêu cầu xử lý kết nối làm đối số duy nhất của chúng và sẽ trả về một chuỗi hoặc một số khi thành công. Nếu không, họ sẽ trả về false

$ ./configure --with-pgsql
0
truy vấn tòa nhà

Chúng ta đã thấy một ví dụ đơn giản về việc thực hiện truy vấn từ PHP. Trong phần này, chúng ta sẽ đề cập sâu hơn về chủ đề xây dựng và thực thi truy vấn

Các truy vấn SQL chỉ đơn thuần là các chuỗi, vì vậy chúng có thể được xây dựng bằng bất kỳ hàm chuỗi nào của PHP. Sau đây là ba ví dụ về xây dựng chuỗi truy vấn trong PHP

$ ./configure --with-pgsql
1

Ví dụ này thực hiện chuyển đổi chữ thường của

$db_handle1 = pg_connect("dbname=database1");   
$db_handle2 = pg_connect("dbname=database2");
0 trước. Sau đó, nó xây dựng chuỗi truy vấn bằng cú pháp chuỗi tiêu chuẩn của PHP

Lưu ý rằng giá trị của

$db_handle1 = pg_connect("dbname=database1");   
$db_handle2 = pg_connect("dbname=database2");
0 sẽ vẫn là chữ thường sau những dòng này

$ ./configure --with-pgsql
2

Ví dụ này sử dụng một cuộc gọi nội tuyến tới

$db_handle1 = pg_connect("dbname=database1");   
$db_handle2 = pg_connect("dbname=database2");
2. Các hàm không thể được gọi từ bên trong chuỗi ký tự (hay nói cách khác là giữa các dấu ngoặc kép), vì vậy chúng ta cần chia chuỗi truy vấn của mình thành hai phần và nối chúng (sử dụng toán tử "dấu chấm") với lệnh gọi hàm ở giữa

Không giống như ví dụ trước, kết quả của hàm

$db_handle1 = pg_connect("dbname=database1");   
$db_handle2 = pg_connect("dbname=database2");
2 sẽ không ảnh hưởng đến giá trị của
$db_handle1 = pg_connect("dbname=database1");   
$db_handle2 = pg_connect("dbname=database2");
0 sau khi dòng này được thực thi bởi PHP

$ ./configure --with-pgsql
3

Ví dụ cuối cùng này sử dụng hàm

$db_handle1 = pg_connect("dbname=database1");   
$db_handle2 = pg_connect("dbname=database2");
5 để tạo chuỗi truy vấn. Hàm
$db_handle1 = pg_connect("dbname=database1");   
$db_handle2 = pg_connect("dbname=database2");
5 sử dụng các tổ hợp ký tự đặc biệt (ví dụ:
$db_handle1 = pg_connect("dbname=database1");   
$db_handle2 = pg_connect("dbname=database2");
7 ở dòng trên) để định dạng chuỗi. Thông tin thêm về hàm
$db_handle1 = pg_connect("dbname=database1");   
$db_handle2 = pg_connect("dbname=database2");
5 có sẵn tại http. //www. php. net/thủ công/vi/chức năng. chạy nước rút. php

Mỗi cách tiếp cận này sẽ tạo ra chính xác cùng một chuỗi truy vấn. Phương pháp tốt nhất để sử dụng, giống như hầu hết mọi thứ, sẽ phụ thuộc vào tình huống. Đối với các truy vấn đơn giản, phép gán chuỗi trực tiếp có thể hoạt động tốt nhất, nhưng khi tình huống yêu cầu phép nội suy hoặc chuyển đổi một số lượng lớn biến, bạn có thể muốn khám phá các cách tiếp cận khác nhau. Trong một số trường hợp, bạn có thể gặp phải sự đánh đổi giữa tốc độ thực thi và khả năng đọc mã. Điều này đúng với hầu hết các nhiệm vụ lập trình, vì vậy bạn sẽ phải áp dụng phán đoán tốt nhất của mình

Đây là một ví dụ về một truy vấn phức tạp được viết dưới dạng một chuỗi gán dài

$ ./configure --with-pgsql
4

Điều này có thể được viết lại bằng hàm PHP

$db_handle1 = pg_connect("dbname=database1");   
$db_handle2 = pg_connect("dbname=database2");
5 như

$ ./configure --with-pgsql
5

Biểu thức thứ hai rõ ràng dễ đọc hơn biểu thức thứ nhất, mặc dù điểm chuẩn sẽ cho thấy rằng khả năng đọc này đi kèm với chi phí hiệu năng thấp vì thời gian của lập trình viên đắt hơn nhiều so với thời gian của máy. Trong trường hợp này, sự đánh đổi giữa khả năng đọc và tốc độ thực thi có lẽ đáng giá, trừ khi bạn đang thực hiện hàng trăm loại cấu trúc chuỗi này trên mỗi yêu cầu trang

Truy vấn phức tạp

Trong một thế giới lý tưởng, tất cả các truy vấn của chúng tôi sẽ đơn giản như những truy vấn được sử dụng trong các ví dụ trước, nhưng tất cả chúng ta đều biết điều đó hiếm khi đúng. Trong những trường hợp cần xây dựng các truy vấn phức tạp hơn, chúng tôi thấy rằng PHP cung cấp một số chức năng thuận tiện để hỗ trợ chúng tôi thực hiện nhiệm vụ của mình

Ví dụ, hãy xem xét trường hợp cần thực hiện một số lượng lớn thao tác xóa bảng. Trong SQL thô, truy vấn có thể trông giống như thế này

$ ./configure --with-pgsql
6

Bây giờ, riêng truy vấn đó có vẻ không phức tạp lắm, nhưng điều gì sẽ xảy ra nếu truy vấn này cần xóa hàng tá hàng, chỉ định _______39_______0 của mỗi hàng trong mệnh đề _______39_______1?

Chúng tôi có thể sẽ nhận được danh sách ID mặt hàng sẽ bị xóa khỏi người dùng thông qua một số phương thức nhập biểu mẫu HTML, vì vậy chúng tôi có thể cho rằng chúng sẽ được lưu trữ ở một số loại định dạng mảng (ít nhất, đó là phương tiện thuận tiện nhất để lưu trữ . Chúng tôi sẽ giả sử mảng ID mặt hàng này được đặt tên là

pg_close($db_handle);
2. Dựa trên giả định đó, truy vấn trên có thể được xây dựng như sau

$ ./configure --with-pgsql
7

Điều này sẽ tạo ra một truy vấn SQL với số ID mặt hàng tùy ý. Dựa trên đoạn mã này, chúng ta có thể viết một hàm chung để thực hiện thao tác xóa

$ ./configure --with-pgsql
8

Thực hiện truy vấn

Khi chuỗi truy vấn đã được tạo, bước tiếp theo là thực thi nó. Các truy vấn được thực hiện bằng cách sử dụng hàm

pg_close($db_handle);
3

pg_close($db_handle);
3

Hàm

pg_close($db_handle);
3 chịu trách nhiệm gửi chuỗi truy vấn đến máy chủ PostgreSQL và trả về tập kết quả

Đây là một ví dụ đơn giản để minh họa việc sử dụng

pg_close($db_handle);
3

$ ./configure --with-pgsql
9

Như bạn có thể thấy,

pg_close($db_handle);
3 yêu cầu hai tham số. một tay cầm kết nối đang hoạt động và một chuỗi truy vấn. Bạn đã quen thuộc với từng điều này từ các phần trước.
pg_close($db_handle);
3 sẽ trả về tập kết quả khi thực hiện truy vấn thành công. Chúng ta sẽ làm việc với tập kết quả trong phần tiếp theo

Nếu truy vấn không thành công hoặc nếu điều khiển kết nối không hợp lệ, thì

pg_close($db_handle);
3 sẽ trả về false. Do đó, cần thận trọng khi kiểm tra giá trị trả về của
pg_close($db_handle);
3 để bạn có thể phát hiện những lỗi như vậy

Ví dụ sau bao gồm một số kiểm tra kết quả

$ ./configure --with-pgsql=/var/lib/pgsql
0

Trong ví dụ này, chúng tôi kiểm tra giá trị trả về của

pg_close($db_handle);
3. Nếu nó không sai (nói cách khác nó có một giá trị), ___________02 đại diện cho một tập kết quả. Mặt khác, nếu
$ ./configure --with-pgsql
02 là sai, chúng tôi biết rằng đã xảy ra lỗi. Sau đó, chúng tôi có thể sử dụng hàm
$ ./configure --with-pgsql
04 để in thông báo mô tả cho lỗi đó. Chúng tôi sẽ đề cập đến các thông báo lỗi chi tiết hơn ở phần sau của chương này

Làm việc với Bộ kết quả

Sau khi thực hiện thành công một truy vấn, pg_exec() sẽ trả về một mã định danh tập kết quả, thông qua đó chúng ta có thể truy cập tập kết quả. Tập kết quả lưu trữ kết quả của truy vấn được trả về bởi cơ sở dữ liệu. Ví dụ: nếu một truy vấn lựa chọn được thực thi, tập kết quả sẽ chứa các hàng kết quả

PHP cung cấp một số chức năng hữu ích để làm việc với tập kết quả. Tất cả chúng đều lấy một định danh tập kết quả làm đối số, vì vậy chúng chỉ có thể được sử dụng sau khi một truy vấn đã được thực hiện thành công. Chúng ta đã học cách kiểm tra để thực hiện thành công trong phần trước

$ ./configure --with-pgsql
05 và
$ ./configure --with-pgsql
06

Bây giờ chúng ta sẽ bắt đầu với hai hàm kết quả đơn giản nhất.

$ ./configure --with-pgsql
05 và
$ ./configure --with-pgsql
06. Hai hàm này lần lượt trả về số hàng và số trường trong tập kết quả. Ví dụ

$ ./configure --with-pgsql=/var/lib/pgsql
1

Các hàm này sẽ trả về -1 nếu có lỗi

$ ./configure --with-pgsql
09

Ngoài ra còn có hàm

$ ./configure --with-pgsql
09 sẽ trả về số hàng bị ảnh hưởng bởi truy vấn. Ví dụ: nếu chúng tôi đang thực hiện thao tác thêm hoặc xóa với truy vấn của mình, chúng tôi sẽ không thực sự truy xuất bất kỳ hàng nào từ cơ sở dữ liệu, do đó, số lượng hàng hoặc trường trong tập kết quả sẽ không thể hiện kết quả của truy vấn. Thay vào đó, những thay đổi diễn ra bên trong cơ sở dữ liệu.
$ ./configure --with-pgsql
09 sẽ trả về số hàng bị ảnh hưởng bởi các loại truy vấn này (nói cách khác là số hàng được chèn, xóa hoặc cập nhật)

$ ./configure --with-pgsql=/var/lib/pgsql
2

Hàm

$ ./configure --with-pgsql
09 sẽ trả về 0 nếu không có hàng nào trong cơ sở dữ liệu bị ảnh hưởng bởi truy vấn, như trong trường hợp truy vấn lựa chọn

Trích xuất giá trị từ tập kết quả

Có một số cách để trích xuất giá trị từ tập kết quả. Chúng ta sẽ bắt đầu với hàm

$ ./configure --with-pgsql
13

$ ./configure --with-pgsql
13

Hàm

$ ./configure --with-pgsql
13 được sử dụng khi bạn muốn truy xuất một giá trị duy nhất từ ​​tập kết quả. Ngoài mã định danh tập kết quả, bạn cũng phải chỉ định hàng và trường mà bạn muốn truy xuất từ ​​kết quả. Hàng được chỉ định bằng số, trong khi trường có thể được chỉ định theo tên hoặc theo chỉ số. Việc đánh số luôn bắt đầu từ số 0

Đây là một ví dụ sử dụng

$ ./configure --with-pgsql
13

$ ./configure --with-pgsql=/var/lib/pgsql
3

Sử dụng các chỉ số, cùng một khối mã này cũng có thể được viết như thế này

$ ./configure --with-pgsql=/var/lib/pgsql
4

Tuy nhiên, ví dụ đầu tiên dễ đọc hơn một chút và không phụ thuộc vào thứ tự của các trường trong tập kết quả. PHP cũng cung cấp các cách truy xuất giá trị nâng cao hơn từ các tập kết quả, bởi vì việc lặp qua các hàng kết quả không đặc biệt hiệu quả

$ ./configure --with-pgsql
17

PHP cung cấp hai hàm,

$ ./configure --with-pgsql
17 và
$ ./configure --with-pgsql
19, có thể trả về nhiều giá trị kết quả cùng một lúc. Mỗi hàm này trả về một mảng

$ ./configure --with-pgsql=/var/lib/pgsql
5
$ ./configure --with-pgsql=/var/lib/pgsql
6

Như bạn có thể thấy, sử dụng

$ ./configure --with-pgsql
17 sẽ loại bỏ nhiều lệnh gọi tới
$ ./configure --with-pgsql
13. Nó cũng đặt các giá trị kết quả trong một mảng, có thể dễ dàng thao tác bằng cách sử dụng các hàm mảng gốc của PHP

Trong ví dụ này, Tuy nhiên, chúng tôi vẫn đang truy cập các trường theo chỉ số của chúng. Lý tưởng nhất là chúng ta cũng có thể truy cập từng trường theo tên liên kết của nó. Để thực hiện điều đó, chúng ta có thể sử dụng hàm

$ ./configure --with-pgsql
19

$ ./configure --with-pgsql
19

Hàm

$ ./configure --with-pgsql
19 cũng trả về một mảng, nhưng nó cho phép chúng ta chỉ định xem chúng ta muốn mảng đó được lập chỉ mục theo số lượng hay theo cách kết hợp (sử dụng tên trường làm khóa). Tùy chọn này được chỉ định bằng cách chuyển một trong những điều sau đây làm đối số thứ ba cho
$ ./configure --with-pgsql
19

  • $ ./configure --with-pgsql
    26Lập chỉ mục mảng kết quả theo tên trường
  • $ ./configure --with-pgsql
    27Lập chỉ mục mảng kết quả bằng số
  • $ ./configure --with-pgsql
    28Lập chỉ mục mảng kết quả cả bằng số và theo tên trường

Nếu bạn không chỉ định một trong các phương pháp lập chỉ mục ở trên, thì

$ ./configure --with-pgsql
28 sẽ được sử dụng theo mặc định. Lưu ý rằng điều này sẽ tăng gấp đôi kích thước tập kết quả của bạn, vì vậy có lẽ bạn nên chỉ định rõ ràng một trong những điều trên. Cũng lưu ý rằng tên trường sẽ luôn được trả về bằng chữ thường, bất kể chúng được thể hiện như thế nào trong chính cơ sở dữ liệu

Đây là ví dụ được viết lại một lần nữa, hiện đang sử dụng

$ ./configure --with-pgsql
19

$ ./configure --with-pgsql=/var/lib/pgsql
7

$ ./configure --with-pgsql
31

PHP cũng cho phép bạn tìm nạp các giá trị kết quả bằng hàm

$ ./configure --with-pgsql
31. Mỗi tên trường sẽ được biểu diễn dưới dạng thuộc tính của đối tượng này. Do đó, các trường không thể được truy cập bằng số. Được viết bằng cách sử dụng
$ ./configure --with-pgsql
31, ví dụ của chúng tôi trông như thế này

$ ./configure --with-pgsql=/var/lib/pgsql
8

Thông tin lĩnh vực

PHP cho phép bạn thu thập một số thông tin về các giá trị trường trong tập kết quả của bạn. Các chức năng này có thể hữu ích trong một số trường hợp nhất định, vì vậy chúng tôi sẽ trình bày ngắn gọn về chúng ở đây

$ ./configure --with-pgsql
34

PostgreSQL hỗ trợ khái niệm giá trị trường

$ ./configure --with-pgsql
35. Tuy nhiên, PHP không nhất thiết phải định nghĩa
$ ./configure --with-pgsql
35 giống như cách mà PostgreSQL thực hiện. Để giải thích cho vấn đề này, PHP cung cấp hàm
$ ./configure --with-pgsql
34 để bạn có thể xác định xem một giá trị trường có phải là
$ ./configure --with-pgsql
35 hay không dựa trên định nghĩa của PostgreSQL về
$ ./configure --with-pgsql
35

$ ./configure --with-pgsql=/var/lib/pgsql
9

$ ./configure --with-pgsql
40 và
$ ./configure --with-pgsql
41

Các hàm này trả về tên hoặc số của một trường đã cho. Các trường được lập chỉ mục bằng số, bắt đầu bằng số không

$ ./configure --with-pgsql --with-imap --enable-xml
0

Lưu ý rằng

$ ./configure --with-pgsql
40 sẽ trả về tên trường như được chỉ định trong câu lệnh
$ ./configure --with-pgsql
43

$ ./configure --with-pgsql
44,
$ ./configure --with-pgsql
45 và
$ ./configure --with-pgsql
46

Kích thước, độ dài (ký tự) được in và loại trường có thể được xác định

$ ./configure --with-pgsql --with-imap --enable-xml
1

Như thường lệ, các chỉ số trường số bắt đầu từ số không. Các chỉ mục trường cũng có thể được chỉ định dưới dạng một chuỗi đại diện cho tên trường

Ngoài ra, nếu kích thước của trường có thể thay đổi, thì

$ ./configure --with-pgsql
44 sẽ trả về -1 hoặc sai nếu có lỗi.
$ ./configure --with-pgsql
45 sẽ trả về -1 nếu có lỗi

Giải phóng tập kết quả

$ ./configure --with-pgsql
49

Có thể giải phóng bộ nhớ được sử dụng bởi tập kết quả bằng cách sử dụng hàm

$ ./configure --with-pgsql
49

$ ./configure --with-pgsql --with-imap --enable-xml
2

PHP sẽ tự động giải phóng tất cả bộ nhớ kết quả khi kết thúc thực thi tập lệnh, vì vậy hàm này chỉ cần được gọi nếu bạn đặc biệt lo lắng về mức tiêu thụ bộ nhớ trong tập lệnh của mình và bạn biết rằng mình sẽ không sử dụng tập kết quả này nữa

Loại chuyển đổi giá trị kết quả

PHP không cung cấp hỗ trợ kiểu dữ liệu đa dạng mà bạn có thể tìm thấy ở các ngôn ngữ khác, vì vậy các giá trị trong tập kết quả đôi khi được chuyển đổi từ kiểu dữ liệu gốc của chúng sang kiểu dữ liệu gốc PHP. Phần lớn, chuyển đổi này sẽ có rất ít hoặc không ảnh hưởng đến ứng dụng của bạn, nhưng điều quan trọng cần lưu ý là một số chuyển đổi loại có thể xảy ra

  • Tất cả các loại số nguyên, boolean và OID được chuyển đổi thành số nguyên
  • Tất cả các dạng số dấu phẩy động được chuyển đổi thành gấp đôi
  • Tất cả các loại khác (mảng, v.v. ) được biểu diễn dưới dạng chuỗi
Xử lý lỗi

Chúng tôi đã đề cập rất ngắn gọn về xử lý lỗi trong phần trước. Bây giờ chúng tôi sẽ đề cập chi tiết hơn một chút

Gần như tất cả các hàm liên quan đến PostgreSQL đều trả về một số loại giá trị có thể dự đoán được khi có lỗi (thường là sai hoặc -1). Điều này giúp dễ dàng phát hiện các tình huống lỗi để tập lệnh của bạn có thể bị lỗi một cách dễ dàng. Ví dụ

$ ./configure --with-pgsql --with-imap --enable-xml
3

Trong ví dụ trên, người dùng sẽ được chuyển hướng đến một trang lỗi nếu nỗ lực kết nối cơ sở dữ liệu không thành công

$ ./configure --with-pgsql
04

$ ./configure --with-pgsql --with-imap --enable-xml
4
$ ./configure --with-pgsql --with-imap --enable-xml
5

Nếu không có ký hiệu

$ ./configure --with-pgsql
52, dòng thứ hai ở trên sẽ tạo ra lỗi phàn nàn về việc thiếu kết nối cơ sở dữ liệu hợp lệ (tất nhiên, giả sử mức báo cáo lỗi của bạn đủ cao để khiến lỗi đó được hiển thị)

Tuy nhiên, xin lưu ý rằng lỗi trên vẫn có thể được phát hiện bằng cách kiểm tra giá trị của

$ ./configure --with-pgsql
02, do đó, việc loại bỏ đầu ra thông báo lỗi không ngăn cản việc chúng tôi xử lý các tình huống lỗi theo chương trình. Hơn nữa, chúng ta có thể hiển thị thông báo lỗi một cách thuận tiện bằng cách sử dụng hàm
$ ./configure --with-pgsql
04

Mã hóa ký tự

Nếu hỗ trợ mã hóa ký tự được bật trong PostgreSQL, PHP sẽ cung cấp các chức năng để nhận và đặt mã hóa máy khách hiện tại. Theo mặc định, mã hóa được đặt thành

$ ./configure --with-pgsql
55

Các bộ ký tự được hỗ trợ là.

$ ./configure --with-pgsql
56,
$ ./configure --with-pgsql
57,
$ ./configure --with-pgsql
58,
$ ./configure --with-pgsql
59,
$ ./configure --with-pgsql
60,
$ ./configure --with-pgsql
61,
$ ./configure --with-pgsql
62,
$ ./configure --with-pgsql
63,
$ ./configure --with-pgsql
64,
$ ./configure --with-pgsql
65,
$ ./configure --with-pgsql
66,
$ ./configure --with-pgsql
67,
$ ./configure --with-pgsql
68,
$ ./configure --with-pgsql
69

$ ./configure --with-pgsql
70

Hàm

$ ./configure --with-pgsql
70 sẽ trả về mã hóa máy khách hiện tại

$ ./configure --with-pgsql --with-imap --enable-xml
6

$ ./configure --with-pgsql
72

Bạn có thể đặt mã hóa máy khách hiện tại bằng hàm

$ ./configure --with-pgsql
72

$ ./configure --with-pgsql --with-imap --enable-xml
7
QUẢ LÊ

PEAR (Kho lưu trữ ứng dụng và tiện ích mở rộng PHP) là một nỗ lực để sao chép chức năng của CPAN của Perl trong cộng đồng PHP. Để trích dẫn các mục tiêu PEAR chính thức

  • Để cung cấp một phương tiện nhất quán cho các tác giả mã thư viện chia sẻ mã của họ với các nhà phát triển khác
  • Để cung cấp cho cộng đồng PHP một cơ sở hạ tầng để chia sẻ mã
  • Để xác định các tiêu chuẩn giúp các nhà phát triển viết mã di động và có thể tái sử dụng
  • Để cung cấp các công cụ để bảo trì và phân phối mã

PEAR chủ yếu là một tập hợp lớn các lớp PHP, sử dụng các khả năng lập trình hướng đối tượng của PHP. Do đó, bạn sẽ cần làm quen với cú pháp của PHP để làm việc với các lớp. Các tiện ích mở rộng hướng đối tượng của PHP được ghi lại tại đây. http. //www. php. net/manual/vi/ngôn ngữ. ôi. php

Thông tin thêm về PEAR có sẵn tại

  • http. //Lê. php. net
  • http. //php. nhật ký web. com/php_pear_tutorials/

Giao diện trừu tượng hóa cơ sở dữ liệu của PEAR

PEAR bao gồm giao diện trừu tượng hóa cơ sở dữ liệu (DB), được bao gồm trong bản phân phối PHP tiêu chuẩn. Ưu điểm của việc sử dụng giao diện trừu tượng hóa cơ sở dữ liệu thay vì gọi trực tiếp các chức năng gốc của cơ sở dữ liệu là tính độc lập của mã. Nếu bạn cần chuyển dự án của mình sang một cơ sở dữ liệu khác, nó có thể liên quan đến việc viết lại mã chính. Tuy nhiên, nếu bạn đã sử dụng giao diện trừu tượng hóa cơ sở dữ liệu, nhiệm vụ sẽ không đáng kể

Giao diện DB của PEAR cũng bổ sung một số tính năng giá trị gia tăng, chẳng hạn như truy cập thuận tiện vào nhiều bộ kết quả và xử lý lỗi tích hợp. Tất cả các tương tác cơ sở dữ liệu được xử lý thông qua các lớp và đối tượng DB. Điều này tương tự về mặt khái niệm với giao diện DBI của Perl

Nhược điểm chính của giao diện trừu tượng hóa cơ sở dữ liệu là chi phí hoạt động mà nó phải gánh chịu khi thực thi ứng dụng của bạn. Một lần nữa, đây là tình huống có sự đánh đổi giữa tính linh hoạt của mã và hiệu suất

Sử dụng giao diện DB

Ví dụ sau minh họa việc sử dụng giao diện DB. lưu ý rằng ví dụ này giả định rằng giao diện PEAR DB đã được cài đặt và có thể tìm thấy giao diện này thông qua cài đặt

$ ./configure --with-pgsql
74 hiện tại. Cả hai đều là mặc định cho các bản cài đặt PHP4 mới hơn

$ ./configure --with-pgsql --with-imap --enable-xml
8

Như bạn có thể thấy, mã này, trong khi không trực tiếp sử dụng bất kỳ chức năng PostgreSQL nào, vẫn tuân theo logic lập trình giống như các ví dụ trước của chúng tôi. Cũng dễ dàng thấy ví dụ trên có thể dễ dàng được điều chỉnh để sử dụng loại cơ sở dữ liệu khác (ví dụ như Oracle hoặc MySQL) mà không cần nỗ lực nhiều

Xử lý lỗi của PEAR

Sử dụng giao diện PEAR DB mang lại cho bạn với tư cách là nhà phát triển một số lợi thế bổ sung. Ví dụ: PEAR bao gồm một hệ thống xử lý lỗi tích hợp. Đây là một số mã để chứng minh xử lý lỗi

$ ./configure --with-pgsql --with-imap --enable-xml
9

Ở trên, chúng ta thấy ví dụ đầu tiên về khả năng xử lý lỗi của PEAR.

$ ./configure --with-pgsql
75. Nếu lệnh gọi tới
$ ./configure --with-pgsql
76 không thành công vì lý do nào đó, nó sẽ trả về một thể hiện
$ ./configure --with-pgsql
77, thay vì một đối tượng kết nối cơ sở dữ liệu. Chúng ta có thể kiểm tra trường hợp này bằng cách sử dụng hàm
$ ./configure --with-pgsql
75, như hình trên

Biết lỗi xảy ra là quan trọng, nhưng tìm ra lý do tại sao lỗi đó xảy ra còn quan trọng hơn. Chúng ta có thể truy xuất văn bản của thông báo lỗi (trong trường hợp này là lỗi kết nối do PostgreSQL tạo ra) bằng cách sử dụng phương thức

$ ./configure --with-pgsql
79 của đối tượng
$ ./configure --with-pgsql
77. Điều này cũng được chứng minh trong ví dụ trên

Ví dụ của chúng tôi tiếp tục với một số truy vấn

<?php   
$db_handle = pg_connect("dbname=bpsimple");  
$query = "SELECT * FROM item";  
$result = pg_exec($db_handle, $query);  
echo "Number of rows: " . pg_numrows($result);  
pg_freeresult($result);  
pg_close($db_handle);  
?>
0

Lưu ý rằng chúng tôi đã thay đổi hành vi xử lý lỗi của PEAR bằng lệnh gọi phương thức

$ ./configure --with-pgsql
81. Đặt hành vi xử lý lỗi thành
$ ./configure --with-pgsql
82 sẽ khiến PHP thoát nghiêm trọng nếu xảy ra lỗi

Dưới đây là danh sách các hành vi xử lý lỗi khác

  • $ ./configure --with-pgsql
    83 Chỉ cần trả lại một đối tượng lỗi (mặc định)
  • $ ./configure --with-pgsql
    84 In thông báo lỗi và tiếp tục thực hiện
  • $ ./configure --with-pgsql
    85 Sử dụng hàm
    $ ./configure --with-pgsql
    86 của PHP để phát sinh lỗi nội bộ
  • $ ./configure --with-pgsql
    82 In thông báo lỗi và hủy bỏ thực thi
  • $ ./configure --with-pgsql
    88 Sử dụng chức năng gọi lại để xử lý lỗi trước khi hủy bỏ thực thi

Thông tin bổ sung về lớp

$ ./configure --with-pgsql
77 và xử lý lỗi PEAR có tại đây. http. //php. net/manual/en/class. lê-lỗi. php

Chuẩn bị và thực hiện truy vấn

PEAR cũng bao gồm một phương thức xử lý để chuẩn bị và thực hiện các truy vấn. Đây là một ví dụ rút gọn thể hiện các phương thức

$ ./configure --with-pgsql
90 và
$ ./configure --with-pgsql
91 của giao diện DB. Ví dụ này giả định rằng chúng ta đã có kết nối cơ sở dữ liệu hợp lệ (từ
$ ./configure --with-pgsql
76)

<?php   
$db_handle = pg_connect("dbname=bpsimple");  
$query = "SELECT * FROM item";  
$result = pg_exec($db_handle, $query);  
echo "Number of rows: " . pg_numrows($result);  
pg_freeresult($result);  
pg_close($db_handle);  
?>
1

Ví dụ này có thể cần một số lời giải thích cho những bạn không quen với các câu lệnh SQL đã chuẩn bị

Cuộc gọi đến phương thức

$ ./configure --with-pgsql
90 tạo ra một mẫu SQL có thể được thực thi lặp đi lặp lại. Lưu ý hai điểm ký tự đại diện trong câu lệnh được chỉ định bằng dấu chấm hỏi. Các phần giữ chỗ này sẽ được thay thế bằng các giá trị thực sau này khi chúng ta gọi phương thức
$ ./configure --with-pgsql
91

Giả sử chúng tôi có một mảng

$ ./configure --with-pgsql
95 chứa mã vạch và ID mặt hàng, chúng tôi sẽ muốn thực hiện một thao tác chèn cơ sở dữ liệu cho mỗi mặt hàng. Để thực hiện điều này, chúng tôi xây dựng một vòng lặp để lặp lại từng mục trong mảng
$ ./configure --with-pgsql
95, trích xuất mã vạch và ID mục, sau đó thực thi câu lệnh SQL đã chuẩn bị

Như đã đề cập ở trên, phương thức

$ ./configure --with-pgsql
91 sẽ thay thế các giá trị giữ chỗ trong câu lệnh đã chuẩn bị bằng các giá trị được truyền cho nó trong đối số thứ hai ở dạng mảng. Trong ví dụ trên, đây sẽ là đối số
$ ./configure --with-pgsql
98. Các giá trị giữ chỗ được thay thế theo thứ tự các giá trị mới này được chỉ định, vì vậy, điều quan trọng là phải làm cho đúng

Hy vọng rằng bạn sẽ thấy tính năng này của giao diện PEAR DB rất hữu ích trong các dự án của riêng bạn

Trong chương này, chúng ta đã xem xét các cách khác nhau mà cơ sở dữ liệu PostgreSQL có thể được truy cập từ ngôn ngữ kịch bản PHP

Chúng tôi đã đề cập đến các khía cạnh khác nhau của kết nối cơ sở dữ liệu, xây dựng và thực thi truy vấn, thao tác với tập kết quả và xử lý lỗi. Chúng tôi cũng đã giới thiệu giao diện trừu tượng hóa cơ sở dữ liệu PEAR

Từ nền tảng này, bây giờ bạn sẽ có đủ các công cụ cơ bản để bắt đầu phát triển các ứng dụng cơ sở dữ liệu dựa trên web của riêng mình

Truy vấn PostgreSQL thực thi như thế nào?

Lệnh EXECUTE của PostgreSQL chuẩn bị và chạy các lệnh một cách linh hoạt . Lệnh EXECUTE cũng có thể chạy các câu lệnh DDL và truy xuất dữ liệu bằng các lệnh SQL. Tương tự như SQL Server, bạn có thể sử dụng lệnh EXECUTE của PostgreSQL với các biến liên kết.

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" );

Làm cách nào để sử dụng pg_query trong PHP?

pg_query() thực hiện truy vấn trên kết nối cơ sở dữ liệu đã chỉ định . pg_query_params() nên được ưu tiên trong hầu hết các trường hợp. Nếu xảy ra lỗi và sai được trả về, chi tiết về lỗi có thể được truy xuất bằng hàm pg_last_error() nếu kết nối hợp lệ.

Hàm nào sau đây được sử dụng để kết nối với SQL postgres trong PHP?

pg_connect() mở kết nối tới cơ sở dữ liệu PostgreSQL được chỉ định bởi connection_string.