2010-01-26 17 views
6

Trong PHP, tôi đang sử dụng PDO với các trình điều khiển pgSQL. Tôi muốn biết làm thế nào để có được giá trị của mệnh đề "RETURNING" được đưa ra trong truy vấn INSERT sql. mã hiện tại của tôi trông như thế này,Trong PHP, khi sử dụng PDO với pgSQL làm thế nào để có được giá trị của mệnh đề "RETURNING" trong truy vấn INSERT sql gốc

$query = 'INSERT INTO "TEST" (firstname, lastname) VALUES ('John', 'Doe') RETURNING user_id'; 
$queryHandle = $connection->prepare($query); 
$queryHandle->execute(); 

Rõ ràng

$ queryHandle-> thực hiện();

trả về TRUE hoặc FALSE. Nhưng tôi muốn lấy giá trị của "user_id" nếu chèn thành công. Các bạn có thể cho tôi một con trỏ như thế nào để đi về nó? Cảm ơn.

+0

Tôi đã thử sử dụng PDO :: lastInsertID trước. Nhưng nó chỉ trả về giá trị trống. Do đó sau khi nhìn xung quanh thấy rằng cách trên là sạch hơn nhiều. – Chantz

Trả lời

9

Bạn có cố gắng đối xử với các lệnh như một lựa chọn trở về, chạy

$ret=$queryHandle->fetchAll(); 
+0

Nó chắc chắn hoạt động! :) Nhưng tôi đã hy vọng cho một cách trực tiếp/sạch hơn để làm điều này. Có lẽ tôi đang yêu cầu quá nhiều ... – Chantz

+0

Không có cách nào sạch hơn, vì bạn có dữ liệu trả về. Nó là tầm thường bạn phải lấy nó. – Pentium10

+1

k. Chỉ là một điều nhỏ, tôi đã sử dụng fetch() thay vì fetchAll() để đảm bảo rằng chỉ có một lần chèn một lần. – Chantz

11
$ret = $queryHandle->fetchColumn(); 

sẽ trả về một giá trị duy nhất thay vì một mảng.

+0

Đây là cách chính xác nếu bạn chỉ muốn lấy lại ID 'RETURNING id ... ' – Xeoncross

Các vấn đề liên quan