Ví dụ đã đăng của bạn không có ý nghĩa - pg_prepare()
và pg_query_params()
là các chức năng độc lập với các mục đích khác nhau mà bạn thường không sử dụng cùng lúc.
pg_prepare()
chuẩn bị một câu lệnh (một truy vấn) để thực thi sau này qua pg_execute()
. Điều này được thực hiện như một sự tối ưu hóa tiềm năng - nếu bạn biết trước rằng bạn sẽ cần thực hiện câu lệnh nhiều lần liên tiếp, việc chuẩn bị trước nó có thể tiết kiệm một số công việc trên máy chủ cơ sở dữ liệu, vì nó không phải (lại) chuẩn bị câu lệnh cho mỗi cuộc gọi.
pg_query_params()
(cũng như phiên bản 'đơn giản hơn' của nó pg_query()
) chỉ thực hiện câu lệnh (truy vấn) trực tiếp, buộc máy chủ cơ sở dữ liệu phải (lại) chuẩn bị câu lệnh mỗi khi hàm được gọi.
Tóm lại, điều này
$result = pg_query_params($query, $params);
sẽ cung cấp cho bạn kết quả chính xác như sau
$statement = pg_prepare($query);
$result = pg_execute($statement, $params);
Sự khác biệt duy nhất là trong trường hợp thứ hai, bạn vẫn có câu lệnh đã chuẩn bị sẵn, sẵn sàng sử dụng lại cho các lệnh gọi khác đến pg_execute()
- đó là lý do tại sao bạn có thể đặt tên cho nó, vì bằng cách đó, bạn có thể có các câu lệnh được chuẩn bị sẵn khác nhau trên cùng một kết nối mà bạn có thể thực thi theo ý muốn, nhiều lần, theo thứ tự tùy ý.