From ad8150b3a9d2e6e9d5dfde655fe42723ec02e0f1 Mon Sep 17 00:00:00 2001 From: "Frank M. Kromann" Date: Tue, 10 Jul 2001 22:34:24 +0000 Subject: [PATCH] Fixing return value from fbsql_query after a DELETE FROM with success. --- ext/fbsql/php_fbsql.c | 63 ++++++++++++++++++++++++++++++++++++++++++- ext/fbsql/php_fbsql.h | 3 +++ 2 files changed, 65 insertions(+), 1 deletion(-) diff --git a/ext/fbsql/php_fbsql.c b/ext/fbsql/php_fbsql.c index 5ab59cbc90..5c53b832ee 100644 --- a/ext/fbsql/php_fbsql.c +++ b/ext/fbsql/php_fbsql.c @@ -108,6 +108,10 @@ void fbcInitialize(); void fbaRelease(); unsigned int fbaCount(); +struct FBCAutoStartInfo { + FBArray* infoLines; +}; + struct PHPFBResult @@ -206,6 +210,9 @@ function_entry fbsql_functions[] = { PHP_FE(fbsql_password, NULL) PHP_FE(fbsql_warnings, NULL) + PHP_FE(fbsql_get_autostart_info, NULL) +// PHP_FE(fbsql_set_autostart_info, NULL) + /* Aliases: */ PHP_FALIAS(fbsql, fbsql_db_query, NULL) @@ -1538,7 +1545,7 @@ static void phpfbQuery(INTERNAL_FUNCTION_PARAMETERS, char* sql, PHPFBLink* link) return_value->type = IS_LONG; if (sR == 1 && md) fbcmdRelease(md); } - else if (tp[0] == 'I' || tp[0] == 'U') + else if (tp[0] == 'I' || tp[0] == 'U' || tp[0] == 'A') { if (tp[0] == 'I') link->insert_id = fbcmdRowIndex(md); return_value->value.lval = 1; @@ -3020,6 +3027,60 @@ PHP_FUNCTION(fbsql_free_result) } /* }}} */ +/* {{{ proto array fbsql_get_autostart_info([resource link_identifier]) + */ +PHP_FUNCTION(fbsql_get_autostart_info) +{ + PHPFBLink* phpLink = NULL; + zval **fbsql_link_index = NULL; + int id; + FBCAutoStartInfo* asInfo; + FBSQLLS_FETCH(); + + switch (ZEND_NUM_ARGS()) { + case 0: + id = php_fbsql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU FBSQLLS_CC); + CHECK_LINK(id); + break; + case 1: + if (zend_get_parameters_ex(1, &fbsql_link_index)==FAILURE) { + RETURN_FALSE; + } + id = -1; + break; + default: + WRONG_PARAM_COUNT; + break; + } + ZEND_FETCH_RESOURCE2(phpLink, PHPFBLink *, fbsql_link_index, id, "FrontBase-Link", le_link, le_plink); + + if (phpLink->execHandler == NULL) { + if (FB_SQL_G(generateWarnings)) php_error(E_WARNING, "No valid Exec handler available for this connection"); + RETURN_FALSE; + } + else { + array_init(return_value); + asInfo = fbcehGetAutoStartInfo(phpLink->execHandler); + if (asInfo != NULL) { + unsigned i; + + for (i=0; iinfoLines); i++) { + FBArray* infoLine = fbaObjectAtIndex(asInfo->infoLines, i); +// if (fbaCount(infoLine) == 2) { +// fbaObjectAtIndex(infoLine, 0); +// fbaObjectAtIndex(infoLine, 1); +// } +// else { + add_index_string(return_value, i, fbaObjectAtIndex(infoLine, 0), 1); +// } + + } + } + } +} +/* }}} */ + + #endif /* diff --git a/ext/fbsql/php_fbsql.h b/ext/fbsql/php_fbsql.h index 55480a3946..d10fe805d0 100644 --- a/ext/fbsql/php_fbsql.h +++ b/ext/fbsql/php_fbsql.h @@ -86,6 +86,9 @@ PHP_FUNCTION(fbsql_username); PHP_FUNCTION(fbsql_password); PHP_FUNCTION(fbsql_warnings); +PHP_FUNCTION(fbsql_get_autostart_info); +//PHP_FUNCTION(fbsql_set_autostart_info); + static void php_fbsql_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type); static void php_fbsql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistant); -- 2.40.0