From a4de43fe87133c028fb20bfde4c7da7eff16963d Mon Sep 17 00:00:00 2001 From: Sterling Hughes Date: Tue, 28 Mar 2000 01:38:50 +0000 Subject: Couple of thangs: 1. We've got protos! 2. The second half of the script is now most Zendiferous. --- ext/mssql/php_mssql.c | 211 +++++++++++++++++++++++++++++++++++--------------- 1 file changed, 149 insertions(+), 62 deletions(-) (limited to 'ext/mssql/php_mssql.c') diff --git a/ext/mssql/php_mssql.c b/ext/mssql/php_mssql.c index eefe1133c8..fab59e712f 100644 --- a/ext/mssql/php_mssql.c +++ b/ext/mssql/php_mssql.c @@ -293,7 +293,7 @@ void php_mssql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) mssql_link mssql, *mssql_ptr; char buffer[32]; MSSQLLS_FETCH(); -// PLS_FETCH(); +/* PLS_FETCH(); */ switch(ARG_COUNT(ht)) { case 0: /* defaults */ @@ -375,7 +375,7 @@ void php_mssql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) mssql.valid = 1; DBSETLVERSION(mssql.login, DBVER60); -// DBSETLTIME(mssql.login, TIMEOUT_INFINITE); +/* DBSETLTIME(mssql.login, TIMEOUT_INFINITE); */ if (!MS_SQL_G(allow_persistent)) { persistent=0; @@ -572,17 +572,26 @@ static int php_mssql_get_default_link(INTERNAL_FUNCTION_PARAMETERS) return MS_SQL_G(default_link); } - +/* {{{ proto int mssql_connect([string servername[, string [username[, string [password]]]) + Establishes a connection to a mssql server. */ PHP_FUNCTION(mssql_connect) { php_mssql_do_connect(INTERNAL_FUNCTION_PARAM_PASSTHRU,0); } +/* }}} */ + +/* {{{ proto int mssql_pconnect([string servername[, string [username[, string [password]]]) + Establishes a persistant connection to a mssql server. */ PHP_FUNCTION(mssql_pconnect) { php_mssql_do_connect(INTERNAL_FUNCTION_PARAM_PASSTHRU,1); } +/* }}} */ + +/* {{{ proto int mssql_close([int connectionId]) + Closes a connection to a mssql server */ PHP_FUNCTION(mssql_close) { zval **mssql_link_index=NULL; @@ -612,6 +621,10 @@ PHP_FUNCTION(mssql_close) RETURN_TRUE; } +/* }}} */ + +/* {{{ proto bool mssql_select_db(string database_name[, int conn_id]) + Select a mssql database */ PHP_FUNCTION(mssql_select_db) { zval **db, **mssql_link_index; @@ -651,6 +664,8 @@ PHP_FUNCTION(mssql_select_db) } } +/* }}} */ + static void php_mssql_get_column_content_with_type(mssql_link *mssql_ptr,int offset,zval *result, int column_type) { if (dbdatlen(mssql_ptr->link,offset) == 0) { @@ -733,6 +748,8 @@ static void php_mssql_get_column_content_without_type(mssql_link *mssql_ptr,int } } +/* {{{ proto int mssql_query(string query[, int conn_id]) + Perform an SQL query on a MSSQL server database */ PHP_FUNCTION(mssql_query) { zval **query, **mssql_link_index; @@ -868,6 +885,10 @@ PHP_FUNCTION(mssql_query) ZEND_REGISTER_RESOURCE(return_value, result, le_result); } +/* }}} */ + +/* {{{ proto int mssql_free_result(string result_index) + Free a MSSQL result index */ PHP_FUNCTION(mssql_free_result) { zval **mssql_result_index; @@ -884,6 +905,10 @@ PHP_FUNCTION(mssql_free_result) RETURN_TRUE; } +/* }}} */ + +/* {{{ proto string mssql_get_last_message() + Gets the last message from the MSSQL server */ PHP_FUNCTION(mssql_get_last_message) { MSSQLLS_FETCH(); @@ -891,6 +916,10 @@ PHP_FUNCTION(mssql_get_last_message) RETURN_STRING(MS_SQL_G(server_message),1); } +/* }}} */ + +/* {{{ proto int mssql_num_rows(int mssql_result_index) + Returns the number of rows fetched in from the result id specified */ PHP_FUNCTION(mssql_num_rows) { zval **mssql_result_index; @@ -908,6 +937,10 @@ PHP_FUNCTION(mssql_num_rows) return_value->type = IS_LONG; } +/* }}} */ + +/* {{{ proto int mssql_num_fields(int mssql_result_index) + Returns the number of fields fetched in from the result id specified */ PHP_FUNCTION(mssql_num_fields) { zval **mssql_result_index; @@ -925,6 +958,11 @@ PHP_FUNCTION(mssql_num_fields) return_value->type = IS_LONG; } +/* }}} */ + +/* {{{ proto array mssql_fetch_row(int result_id) + Returns an array of the current row in the result set specified by + result_id */ PHP_FUNCTION(mssql_fetch_row) { zval **mssql_result_index; @@ -953,6 +991,8 @@ PHP_FUNCTION(mssql_fetch_row) result->cur_row++; } +/* }}} */ + static void php_mssql_fetch_hash(INTERNAL_FUNCTION_PARAMETERS) { zval **mssql_result_index; @@ -991,6 +1031,9 @@ static void php_mssql_fetch_hash(INTERNAL_FUNCTION_PARAMETERS) result->cur_row++; } +/* {{{ object mssql_fetch_object(int result_id) + Returns a psuedo-object of the current row in the result set specified by + result_id */ PHP_FUNCTION(mssql_fetch_object) { php_mssql_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU); @@ -999,25 +1042,36 @@ PHP_FUNCTION(mssql_fetch_object) } } +/* }}} */ + +/* {{{ array mssql_fetch_array(int result_id) + Returns an associative array of the current row in the result set specified by + result_id */ PHP_FUNCTION(mssql_fetch_array) { php_mssql_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU); } +/* }}} */ + + +/* {{{ proto int mssql_data_seek(int result_id, int offset) + Mssql_data_seek() moves the internal row pointer of the MS SQL result associated + with the specified result identifier to pointer to the specifyed row number. */ PHP_FUNCTION(mssql_data_seek) { - zval *mssql_result_index, *offset; + zval **mssql_result_index, **offset; int type,id; mssql_result *result; MSSQLLS_FETCH(); - if (ARG_COUNT(ht)!=2 || getParameters(ht, 2, &mssql_result_index, &offset)==FAILURE) { + if (ARG_COUNT(ht) != 2 || zend_get_parameters_ex(2, &mssql_result_index, &offset)==FAILURE) { WRONG_PARAM_COUNT; } - convert_to_long(mssql_result_index); - id = mssql_result_index->value.lval; + convert_to_long_ex(mssql_result_index); + id = (*mssql_result_index)->value.lval; result = (mssql_result *) zend_list_find(id,&type); if (type!=le_result) { @@ -1025,16 +1079,18 @@ PHP_FUNCTION(mssql_data_seek) RETURN_FALSE; } - convert_to_long(offset); - if (offset->value.lval<0 || offset->value.lval>=result->num_rows) { + convert_to_long_ex(offset); + if ((*offset)->value.lval<0 || (*offset)->value.lval>=result->num_rows) { php_error(E_WARNING,"MS SQL: Bad row offset"); RETURN_FALSE; } - result->cur_row = offset->value.lval; + result->cur_row = (*offset)->value.lval; RETURN_TRUE; } +/* }}} */ + static char *php_mssql_get_field_name(int type) { switch (type) { @@ -1085,9 +1141,11 @@ static char *php_mssql_get_field_name(int type) } } +/* {{{ proto object mssql_fetch_field(int result_id[, int offset]) + Gets information about certain fields in a query result */ PHP_FUNCTION(mssql_fetch_field) { - zval *mssql_result_index,*offset; + zval **mssql_result_index, **offset; int type,id,field_offset; mssql_result *result; MSSQLLS_FETCH(); @@ -1095,25 +1153,25 @@ PHP_FUNCTION(mssql_fetch_field) switch (ARG_COUNT(ht)) { case 1: - if (getParameters(ht, 1, &mssql_result_index)==FAILURE) { + if (zend_get_parameters_ex(1, &mssql_result_index)==FAILURE) { RETURN_FALSE; } field_offset=-1; break; case 2: - if (getParameters(ht, 2, &mssql_result_index, &offset)==FAILURE) { + if (zend_get_parameters_ex(2, &mssql_result_index, &offset)==FAILURE) { RETURN_FALSE; } - convert_to_long(offset); - field_offset = offset->value.lval; + convert_to_long_ex(offset); + field_offset = (*offset)->value.lval; break; default: WRONG_PARAM_COUNT; break; } - convert_to_long(mssql_result_index); - id = mssql_result_index->value.lval; + convert_to_long_ex(mssql_result_index); + id = (*mssql_result_index)->value.lval; result = (mssql_result *) zend_list_find(id,&type); if (type!=le_result) { @@ -1143,9 +1201,14 @@ PHP_FUNCTION(mssql_fetch_field) add_property_string(return_value, "type", php_mssql_get_field_name(result->fields[field_offset].type), 1); } +/* }}} */ + +/* {{{ proto int mssql_field_length(int result_id[, int offset]) + Gets the length of a mssql field with offset, offset and a result set specified + by result_id */ PHP_FUNCTION(mssql_field_length) { - zval *mssql_result_index,*offset; + zval **mssql_result_index, **offset; int type,id,field_offset; mssql_result *result; MSSQLLS_FETCH(); @@ -1153,25 +1216,25 @@ PHP_FUNCTION(mssql_field_length) switch (ARG_COUNT(ht)) { case 1: - if (getParameters(ht, 1, &mssql_result_index)==FAILURE) { + if (zend_get_parameters_ex(1, &mssql_result_index)==FAILURE) { RETURN_FALSE; } field_offset=-1; break; case 2: - if (getParameters(ht, 2, &mssql_result_index, &offset)==FAILURE) { + if (zend_get_parameters_ex(2, &mssql_result_index, &offset)==FAILURE) { RETURN_FALSE; } - convert_to_long(offset); - field_offset = offset->value.lval; + convert_to_long_ex(offset); + field_offset = (*offset)->value.lval; break; default: WRONG_PARAM_COUNT; break; } - convert_to_long(mssql_result_index); - id = mssql_result_index->value.lval; + convert_to_long_ex(mssql_result_index); + id = (*mssql_result_index)->value.lval; result = (mssql_result *) zend_list_find(id,&type); if (type!=le_result) { @@ -1195,9 +1258,14 @@ PHP_FUNCTION(mssql_field_length) return_value->type = IS_LONG; } +/* }}} */ + +/* {{{ proto string mssql_field_name(int result_id[, int offset]) + Returns the name of the field given by offset in the result set given by + result_id */ PHP_FUNCTION(mssql_field_name) { - zval *mssql_result_index,*offset; + zval **mssql_result_index, **offset; int type,id,field_offset; mssql_result *result; MSSQLLS_FETCH(); @@ -1205,25 +1273,25 @@ PHP_FUNCTION(mssql_field_name) switch (ARG_COUNT(ht)) { case 1: - if (getParameters(ht, 1, &mssql_result_index)==FAILURE) { + if (zend_get_parameters_ex(1, &mssql_result_index)==FAILURE) { RETURN_FALSE; } field_offset=-1; break; case 2: - if (getParameters(ht, 2, &mssql_result_index, &offset)==FAILURE) { + if (zend_get_parameters_ex(2, &mssql_result_index, &offset)==FAILURE) { RETURN_FALSE; } - convert_to_long(offset); - field_offset = offset->value.lval; + convert_to_long_ex(offset); + field_offset = (*offset)->value.lval; break; default: WRONG_PARAM_COUNT; break; } - convert_to_long(mssql_result_index); - id = mssql_result_index->value.lval; + convert_to_long_ex(mssql_result_index); + id = (*mssql_result_index)->value.lval; result = (mssql_result *) zend_list_find(id,&type); if (type!=le_result) { @@ -1248,9 +1316,13 @@ PHP_FUNCTION(mssql_field_name) return_value->type = IS_STRING; } +/* }}} */ + +/* {{{ proto string mssql_field_type(int result_id[, int offset]) + Returns the type of field at offset, offset in the result set result_id */ PHP_FUNCTION(mssql_field_type) { - zval *mssql_result_index,*offset; + zval **mssql_result_index, **offset; int type,id,field_offset; mssql_result *result; MSSQLLS_FETCH(); @@ -1258,25 +1330,25 @@ PHP_FUNCTION(mssql_field_type) switch (ARG_COUNT(ht)) { case 1: - if (getParameters(ht, 1, &mssql_result_index)==FAILURE) { + if (zend_get_parameters_ex(1, &mssql_result_index)==FAILURE) { RETURN_FALSE; } field_offset=-1; break; case 2: - if (getParameters(ht, 2, &mssql_result_index, &offset)==FAILURE) { + if (zend_get_parameters_ex(2, &mssql_result_index, &offset)==FAILURE) { RETURN_FALSE; } - convert_to_long(offset); - field_offset = offset->value.lval; + convert_to_long_ex(offset); + field_offset = (*offset)->value.lval; break; default: WRONG_PARAM_COUNT; break; } - convert_to_long(mssql_result_index); - id = mssql_result_index->value.lval; + convert_to_long_ex(mssql_result_index); + id = (*mssql_result_index)->value.lval; result = (mssql_result *) zend_list_find(id,&type); if (type!=le_result) { @@ -1301,20 +1373,24 @@ PHP_FUNCTION(mssql_field_type) return_value->type = IS_STRING; } +/* }}} */ + +/* {{{ proto mssql_field_seek(int result_id[, int offset]) + Seeks to the specified field offset */ PHP_FUNCTION(mssql_field_seek) { - zval *mssql_result_index,*offset; + zval **mssql_result_index, **offset; int type,id,field_offset; mssql_result *result; MSSQLLS_FETCH(); - if (ARG_COUNT(ht)!=2 || getParameters(ht, 2, &mssql_result_index, &offset)==FAILURE) { + if (ARG_COUNT(ht)!=2 || zend_get_parameters_ex(2, &mssql_result_index, &offset)==FAILURE) { WRONG_PARAM_COUNT; } - convert_to_long(mssql_result_index); - id = mssql_result_index->value.lval; + convert_to_long_ex(mssql_result_index); + id = (*mssql_result_index)->value.lval; result = (mssql_result *) zend_list_find(id,&type); if (type!=le_result) { @@ -1322,8 +1398,8 @@ PHP_FUNCTION(mssql_field_seek) RETURN_FALSE; } - convert_to_long(offset); - field_offset = offset->value.lval; + convert_to_long_ex(offset); + field_offset = (*offset)->value.lval; if (field_offset<0 || field_offset >= result->num_fields) { php_error(E_WARNING,"MS SQL: Bad column offset"); @@ -1334,20 +1410,24 @@ PHP_FUNCTION(mssql_field_seek) RETURN_TRUE; } +/* }}} */ + +/* {{{ proto string mssql_result(int result_id, int row, mixed field) + Mssql_result() returns the contents of one cell from a MS SQL result set. */ PHP_FUNCTION(mssql_result) { - zval *row, *field, *mssql_result_index; + zval **row, **field, **mssql_result_index; int id,type,field_offset=0; mssql_result *result; MSSQLLS_FETCH(); - if (ARG_COUNT(ht)!=3 || getParameters(ht, 3, &mssql_result_index, &row, &field)==FAILURE) { + if (ARG_COUNT(ht)!=3 || zend_get_parameters_ex(3, &mssql_result_index, &row, &field)==FAILURE) { WRONG_PARAM_COUNT; } - convert_to_long(mssql_result_index); - id = mssql_result_index->value.lval; + convert_to_long_ex(mssql_result_index); + id = (*mssql_result_index)->value.lval; result = (mssql_result *) zend_list_find(id,&type); if (type!=le_result) { @@ -1355,8 +1435,8 @@ PHP_FUNCTION(mssql_result) RETURN_FALSE; } - convert_to_long(row); - if (row->value.lval<0 || row->value.lval>=result->num_rows) { + convert_to_long_ex(row); + if ((*row)->value.lval < 0 || (*row)->value.lval> = result->num_rows) { php_error(E_WARNING,"MS SQL: Bad row offset (%d)",row->value.lval); RETURN_FALSE; } @@ -1378,8 +1458,8 @@ PHP_FUNCTION(mssql_result) break; } default: - convert_to_long(field); - field_offset = field->value.lval; + convert_to_long_ex(field); + field_offset = (*field)->value.lval; if (field_offset<0 || field_offset>=result->num_fields) { php_error(E_WARNING,"MS SQL: Bad column offset specified"); RETURN_FALSE; @@ -1387,36 +1467,43 @@ PHP_FUNCTION(mssql_result) break; } - *return_value = result->data[row->value.lval][field_offset]; + *return_value = result->data[(*row)->value.lval][field_offset]; zval_copy_ctor(return_value); } +/* }}} */ + +/* {{{ proto void mssql_min_error_severity(int severity) + Set the minimum error severity */ PHP_FUNCTION(mssql_min_error_severity) { - zval *severity; + zval **severity; MSSQLLS_FETCH(); - if (ARG_COUNT(ht)!=1 || getParameters(ht, 1, &severity)==FAILURE) { + if (ARG_COUNT(ht)!=1 || zend_get_parameters_ex(1, &severity)==FAILURE) { WRONG_PARAM_COUNT; } - convert_to_long(severity); - MS_SQL_G(min_error_severity) = severity->value.lval; + convert_to_long_ex(severity); + MS_SQL_G(min_error_severity) = (*severity)->value.lval; } +/* }}} */ + +/* {{{ proto void mssql_min_message_severity(int severity) + Set the minimum message severity */ PHP_FUNCTION(mssql_min_message_severity) { - zval *severity; + zval **severity; MSSQLLS_FETCH(); - if (ARG_COUNT(ht)!=1 || getParameters(ht, 1, &severity)==FAILURE) { + if (ARG_COUNT(ht)!=1 || zend_get_parameters_ex(1, &severity)==FAILURE) { WRONG_PARAM_COUNT; } - convert_to_long(severity); - MS_SQL_G(min_message_severity) = severity->value.lval; + convert_to_long_ex(severity); + MS_SQL_G(min_message_severity) = (*severity)->value.lval; } /* }}} */ - #endif -- cgit v1.2.1