Tôi đã học được rằng odbc_execute()
không phải lúc nào cũng kích hoạt lỗi ODBC đúng khi trả về FALSE
(không ít nhất với trình điều khiển Oracle) và tôi không thể tin tưởng hoàn toàn odbc_error()
hoặc odbc_errormsg()
. Tình huống này dễ phát hiện khi không có lỗi trước đó vì odbc_error()
trả về một chuỗi trống. Tuy nhiên, khi nó trả về một cái gì đó tôi không biết liệu nó thuộc về hoạt động thất bại cuối cùng hay nó vẫn còn sót lại từ một lỗi trước đó.Lừa để đặt lại odbc_error()
Giải pháp đơn giản nhất sẽ được thiết lập lại các odbc_error()
và odbc_errormsg()
chức năng khi xảy ra lỗi trong các cuộc gọi để tiếp theo sẽ bắt đầu từ đầu, nhưng tôi không thể tìm thấy một cách hỗ trợ để làm như vậy. Bạn có thể tìm ra cách để làm điều đó không?
Thông tin cơ bản: Tôi đang nâng cấp ứng dụng cũ với lớp bao gồm các cuộc gọi cơ sở dữ liệu. Đó là lý do tại sao tôi cần phải làm mọi thứ càng chung chung càng tốt.
Cảm ơn câu trả lời của bạn. Tuy nhiên, câu trả lời của bạn chỉ là tốt cho trường hợp mà một trong những nhu cầu thông báo lỗi cho mục đích gỡ lỗi chỉ. Trong một ứng dụng thế giới thực, người ta có thể dựa vào các thông báo lỗi để đưa ra quyết định (hành vi khác nhau theo lỗi, hoặc dịch tin nhắn theo cách có ý nghĩa đối với người dùng cuối). Đây là lý do tại sao tôi cần một câu trả lời kỹ lưỡng và cung cấp một tiền thưởng. –
Lỗi nền tảng gốc mà câu hỏi này nói đến là 'odbc_errormsg()' có thể trả lời thư một cách vui vẻ từ một câu lệnh trước. Vấn đề không phải là để phát hiện xem truy vấn của bạn thành công (đó là dễ dàng), vấn đề là để đảm bảo rằng các thông báo lỗi không thuộc về một truy vấn trước đó.Trừ khi tôi đang thiếu một cái gì đó, mã của bạn không có gì để giải quyết điều đó. –
Trong phương pháp này, chúng ta có thể phát hiện xem có một thông điệp arror từ câu lệnh trước đó hay không. Ví dụ, chúng ta đang thực hiện ba truy vấn. Đầu tiên là thành công, thứ hai thất bại và trả về "thất bại tin nhắn 1". Và thứ ba cũng không trả về "thất bại tin nhắn 1". Bằng cách tiếp cận này, chúng ta có thể biết rằng "thông báo lỗi 1" thuộc về truy vấn 2. – isa