From: Markus Fischer Date: Mon, 18 Mar 2002 21:01:29 +0000 (+0000) Subject: - Let OCIError() also return the sql statement which failed and the exact X-Git-Tag: php-4.3.0dev-ZendEngine2-Preview1~1254 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=30454e237b997ef9179a7aa4e0c6c44aecd46d70;p=php - Let OCIError() also return the sql statement which failed and the exact position into the statement where it failed (if applicable). Patch by Daniel Ceregatti . --- diff --git a/ext/oci8/oci8.c b/ext/oci8/oci8.c index 988b4bc5d5..baccacd562 100644 --- a/ext/oci8/oci8.c +++ b/ext/oci8/oci8.c @@ -4218,16 +4218,35 @@ PHP_FUNCTION(ocierror) zval **arg; oci_statement *statement; oci_connection *connection; - text errbuf[512]; - sb4 errcode = 0; + text errbuf[512]; + sb4 errcode = 0; sword error = 0; dvoid *errh = NULL; + ub2 errorofs = 0; + text *sqltext = NULL; if (zend_get_parameters_ex(1, &arg) == SUCCESS) { statement = (oci_statement *) zend_fetch_resource(arg TSRMLS_CC, -1, NULL, NULL, 1, le_stmt); if (statement) { errh = statement->pError; error = statement->error; + + CALL_OCI_RETURN(statement->error, OCIAttrGet( + (dvoid *)statement->pStmt, + OCI_HTYPE_STMT, + (text *) &sqltext, + (ub4 *)0, + OCI_ATTR_STATEMENT, + statement->pError)); + + CALL_OCI_RETURN(statement->error, OCIAttrGet( + (dvoid *)statement->pStmt, + OCI_HTYPE_STMT, + (ub2 *)&errorofs, + (ub4 *)0, + OCI_ATTR_PARSE_ERROR_OFFSET, + statement->pError)); + } else { connection = (oci_connection *) zend_fetch_resource(arg TSRMLS_CC, -1, NULL, NULL, 1, le_conn); if (connection) { @@ -4262,6 +4281,8 @@ PHP_FUNCTION(ocierror) array_init(return_value); add_assoc_long(return_value, "code", errcode); add_assoc_string(return_value, "message", (char*) errbuf, 1); + add_assoc_long(return_value, "offset", errorofs); + add_assoc_string(return_value, "sqltext", sqltext ? (char *) sqltext : "", 1); } else { RETURN_FALSE; }