summaryrefslogtreecommitdiff
path: root/ext/odbc/php_odbc.c
diff options
context:
space:
mode:
authorStig Bakken <ssb@php.net>2000-12-05 12:11:30 +0000
committerStig Bakken <ssb@php.net>2000-12-05 12:11:30 +0000
commit92fc2093844ef626211cab686007817bb0cf4524 (patch)
tree63f815d94a516aaf4521d6d6ed0f75ff62e9b009 /ext/odbc/php_odbc.c
parentb97e23c4a83ed65e9db2fe282a621ebd4470ff1e (diff)
downloadphp-git-92fc2093844ef626211cab686007817bb0cf4524.tar.gz
Applied IBM DB2 patch by Walter Franzini <walter@sys-net.it>
@ext/odbc: IBM DB2 patch by Walter Franzini <walter@sys-net.it>
Diffstat (limited to 'ext/odbc/php_odbc.c')
-rw-r--r--ext/odbc/php_odbc.c41
1 files changed, 28 insertions, 13 deletions
diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c
index 7ff6523417..2219f2fcd7 100644
--- a/ext/odbc/php_odbc.c
+++ b/ext/odbc/php_odbc.c
@@ -774,11 +774,17 @@ PHP_FUNCTION(odbc_prepare)
}
#endif
- if ((rc = SQLPrepare(result->stmt, query, SQL_NTS)) != SQL_SUCCESS) {
- odbc_sql_error(conn->henv, conn->hdbc, result->stmt, "SQLPrepare");
- SQLFreeStmt(result->stmt, SQL_DROP);
- RETURN_FALSE;
- }
+ rc = SQLPrepare(result->stmt, query, SQL_NTS);
+ switch (rc) {
+ case SQL_SUCCESS:
+ break;
+ case SQL_SUCCESS_WITH_INFO:
+ odbc_sql_error(conn->henv, conn->hdbc, result->stmt, "SQLPrepare");
+ break;
+ default:
+ odbc_sql_error(conn->henv, conn->hdbc, result->stmt, "SQLPrepare");
+ RETURN_FALSE;
+ }
SQLNumParams(result->stmt, &(result->numparams));
SQLNumResultCols(result->stmt, &(result->numcols));
@@ -933,10 +939,16 @@ PHP_FUNCTION(odbc_execute)
}
}
} else {
- if (rc != SQL_SUCCESS) {
- odbc_sql_error(result->conn_ptr->henv, result->conn_ptr->hdbc, result->stmt, "SQLExecute");
- RETVAL_FALSE;
- }
+ switch (rc) {
+ case SQL_SUCCESS:
+ break;
+ case SQL_NO_DATA_FOUND:
+ case SQL_SUCCESS_WITH_INFO:
+ odbc_sql_error(result->conn_ptr->henv, result->conn_ptr->hdbc, result->stmt, "SQLExecute");
+ break;
+ default:
+ RETVAL_FALSE;
+ }
}
if (result->numparams > 0) {
@@ -948,7 +960,8 @@ PHP_FUNCTION(odbc_execute)
efree(params);
}
- if (rc == SQL_SUCCESS) {
+ if (rc == SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO
+ || rc == SQL_NO_DATA_FOUND) {
RETVAL_TRUE;
}
@@ -986,7 +999,7 @@ PHP_FUNCTION(odbc_cursor)
rc = SQLGetInfo(result->conn_ptr->hdbc,SQL_MAX_CURSOR_NAME_LEN,
(void *)&max_len,0,&len);
- if (rc != SQL_SUCCESS) {
+ if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
RETURN_FALSE;
}
@@ -997,7 +1010,7 @@ PHP_FUNCTION(odbc_cursor)
RETURN_FALSE;
}
rc = SQLGetCursorName(result->stmt,cursorname,(SWORD)max_len,&len);
- if (rc != SQL_SUCCESS) {
+ if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
char state[6]; /* Not used */
SDWORD error; /* Not used */
char errormsg[255];
@@ -1102,7 +1115,9 @@ PHP_FUNCTION(odbc_exec)
#endif
rc = SQLExecDirect(result->stmt, query, SQL_NTS);
- if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
+ if (rc != SQL_SUCCESS
+ && rc != SQL_SUCCESS_WITH_INFO
+ && rc != SQL_NO_DATA_FOUND) {
/* XXX FIXME we should really check out SQLSTATE with SQLError
* in case rc is SQL_SUCCESS_WITH_INFO here.
*/