📄 php_msql.c
字号:
int id; int msql; switch(ZEND_NUM_ARGS()) { case 1: if (getParameters(ht, 1, &db)==FAILURE) { RETURN_FALSE; } id = php_msql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU); break; case 2: if (getParameters(ht, 2, &db, &msql_link)==FAILURE) { RETURN_FALSE; } id = -1; break; default: WRONG_PARAM_COUNT; break; } ZEND_FETCH_RESOURCE2(msql, int, &msql_link, id, "mSQL-Link", msql_globals.le_link, msql_globals.le_plink); convert_to_string(db); if (msqlSelectDB(msql,Z_STRVAL_P(db))==-1) { RETURN_FALSE; } else { RETURN_TRUE; }}/* }}} *//* {{{ proto int msql_create_db(string database_name [, int link_identifier]) Create an mSQL database */PHP_FUNCTION(msql_create_db){ pval *db,*msql_link; int id; int msql; switch(ZEND_NUM_ARGS()) { case 1: if (getParameters(ht, 1, &db)==FAILURE) { WRONG_PARAM_COUNT; } id = php_msql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU); break; case 2: if (getParameters(ht, 2, &db, &msql_link)==FAILURE) { WRONG_PARAM_COUNT; } id = -1; break; default: WRONG_PARAM_COUNT; break; } ZEND_FETCH_RESOURCE2(msql, int, &msql_link, id, "mSQL-Link", msql_globals.le_link, msql_globals.le_plink); convert_to_string(db); if (msqlCreateDB(msql,Z_STRVAL_P(db))<0) { RETURN_FALSE; } else { RETURN_TRUE; }}/* }}} *//* {{{ proto int msql_drop_db(string database_name [, int link_identifier]) Drop (delete) an mSQL database */PHP_FUNCTION(msql_drop_db){ pval *db,*msql_link; int id; int msql; switch(ZEND_NUM_ARGS()) { case 1: if (getParameters(ht, 1, &db)==FAILURE) { WRONG_PARAM_COUNT; } id = php_msql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU); break; case 2: if (getParameters(ht, 2, &db, &msql_link)==FAILURE) { WRONG_PARAM_COUNT; } id = -1; break; default: WRONG_PARAM_COUNT; break; } ZEND_FETCH_RESOURCE2(msql, int, &msql_link, id, "mSQL-Link", msql_globals.le_link, msql_globals.le_plink); convert_to_string(db); if (msqlDropDB(msql,Z_STRVAL_P(db))<0) { RETURN_FALSE; } else { RETURN_TRUE; }}/* }}} *//* {{{ proto int msql_query(string query [, int link_identifier]) Send an SQL query to mSQL */PHP_FUNCTION(msql_query){ pval *query,*msql_link; int id; int msql; int af_rows; switch(ZEND_NUM_ARGS()) { case 1: if (getParameters(ht, 1, &query)==FAILURE) { WRONG_PARAM_COUNT; } id = msql_globals.default_link; break; case 2: if (getParameters(ht, 2, &query, &msql_link)==FAILURE) { WRONG_PARAM_COUNT; } id = -1; break; default: WRONG_PARAM_COUNT; break; } ZEND_FETCH_RESOURCE2(msql, int, &msql_link, id, "mSQL-Link", msql_globals.le_link, msql_globals.le_plink); convert_to_string(query); if ((af_rows = msqlQuery(msql,Z_STRVAL_P(query)))==-1) { RETURN_FALSE; } ZEND_REGISTER_RESOURCE(return_value, php_msql_query_wrapper(msqlStoreResult(), af_rows), msql_globals.le_query);}/* }}} *//* {{{ proto int msql_db_query(string database_name, string query [, int link_identifier]) Send an SQL query to mSQL */PHP_FUNCTION(msql_db_query){ pval *db,*query,*msql_link; int id; int msql; int af_rows; switch(ZEND_NUM_ARGS()) { case 2: if (getParameters(ht, 2, &db, &query)==FAILURE) { RETURN_FALSE; } id = php_msql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU); break; case 3: if (getParameters(ht, 3, &db, &query, &msql_link)==FAILURE) { RETURN_FALSE; } id = -1; break; default: WRONG_PARAM_COUNT; break; } ZEND_FETCH_RESOURCE2(msql, int, &msql_link, id, "mSQL-Link", msql_globals.le_link, msql_globals.le_plink); convert_to_string(db); if (msqlSelectDB(msql,Z_STRVAL_P(db))==-1) { RETURN_FALSE; } convert_to_string(query); if ((af_rows = msqlQuery(msql,Z_STRVAL_P(query)))==-1) { RETURN_FALSE; } ZEND_REGISTER_RESOURCE(return_value, php_msql_query_wrapper(msqlStoreResult(), af_rows), msql_globals.le_query);}/* }}} *//* {{{ proto int msql_list_dbs([int link_identifier]) List databases available on an mSQL server */PHP_FUNCTION(msql_list_dbs){ pval *msql_link; int id; int msql; m_result *msql_result; switch(ZEND_NUM_ARGS()) { case 0: id = php_msql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU); break; case 1: if (getParameters(ht, 1, &msql_link)==FAILURE) { RETURN_FALSE; } id = -1; break; default: WRONG_PARAM_COUNT; break; } ZEND_FETCH_RESOURCE2(msql, int, &msql_link, id, "mSQL-Link", msql_globals.le_link, msql_globals.le_plink); if ((msql_result=msqlListDBs(msql))==NULL) { php_error(E_WARNING, "%s(): Unable to save mSQL query result", get_active_function_name(TSRMLS_C)); RETURN_FALSE; } ZEND_REGISTER_RESOURCE(return_value, php_msql_query_wrapper(msql_result, 0), msql_globals.le_query);}/* }}} *//* {{{ proto int msql_list_tables(string database_name [, int link_identifier]) List tables in an mSQL database */PHP_FUNCTION(msql_list_tables){ pval *db,*msql_link; int id; int msql; m_result *msql_result; switch(ZEND_NUM_ARGS()) { case 1: if (getParameters(ht, 1, &db)==FAILURE) { RETURN_FALSE; } id = php_msql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU); break; case 2: if (getParameters(ht, 2, &db, &msql_link)==FAILURE) { RETURN_FALSE; } id = -1; break; default: WRONG_PARAM_COUNT; break; } ZEND_FETCH_RESOURCE2(msql, int, &msql_link, id, "mSQL-Link", msql_globals.le_link, msql_globals.le_plink); convert_to_string(db); if (msqlSelectDB(msql,Z_STRVAL_P(db))==-1) { RETURN_FALSE; } if ((msql_result=msqlListTables(msql))==NULL) { php_error(E_WARNING, "%s(): Unable to save mSQL query result", get_active_function_name(TSRMLS_C)); RETURN_FALSE; } ZEND_REGISTER_RESOURCE(return_value, php_msql_query_wrapper(msql_result, 0), msql_globals.le_query);}/* }}} *//* {{{ proto int msql_list_fields(string database_name, string table_name [, int link_identifier]) List mSQL result fields */PHP_FUNCTION(msql_list_fields){ pval *db,*table,*msql_link; int id; int msql; m_result *msql_result; switch(ZEND_NUM_ARGS()) { case 2: if (getParameters(ht, 2, &db, &table)==FAILURE) { RETURN_FALSE; } id = php_msql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU); break; case 3: if (getParameters(ht, 3, &db, &table, &msql_link)==FAILURE) { RETURN_FALSE; } id = -1; break; default: WRONG_PARAM_COUNT; break; } ZEND_FETCH_RESOURCE2(msql, int, &msql_link, id, "mSQL-Link", msql_globals.le_link, msql_globals.le_plink); convert_to_string(db); if (msqlSelectDB(msql,Z_STRVAL_P(db))==-1) { RETURN_FALSE; } convert_to_string(table); if ((msql_result=msqlListFields(msql,Z_STRVAL_P(table)))==NULL) { php_error(E_WARNING, "%s(): Unable to save mSQL query result", get_active_function_name(TSRMLS_C)); RETURN_FALSE; } ZEND_REGISTER_RESOURCE(return_value, php_msql_query_wrapper(msql_result, 0), msql_globals.le_query);}/* }}} *//* {{{ proto string msql_error([int link_identifier]) Returns the text of the error message from previous mSQL operation */PHP_FUNCTION(msql_error){ if (ZEND_NUM_ARGS()) { WRONG_PARAM_COUNT; } RETURN_STRING(msqlErrMsg,1);}/* }}} *//* {{{ proto int msql_result(int query, int row [, mixed field]) Get result data */PHP_FUNCTION(msql_result){ pval *result, *row, *field=NULL; m_result *msql_result; m_query *msql_query; m_row sql_row; int field_offset=0; switch (ZEND_NUM_ARGS()) { case 2: if (getParameters(ht, 2, &result, &row)==FAILURE) { RETURN_FALSE; } break; case 3: if (getParameters(ht, 3, &result, &row, &field)==FAILURE) { RETURN_FALSE; } break; default: WRONG_PARAM_COUNT; break; } MSQL_GET_QUERY(result); convert_to_long(row); if (Z_LVAL_P(row)<0 || Z_LVAL_P(row)>=msqlNumRows(msql_result)) { php_error(E_WARNING, "%s(): Unable to jump to row %d on mSQL query index %d", get_active_function_name(TSRMLS_C),Z_LVAL_P(row),Z_LVAL_P(result)); RETURN_FALSE; } msqlDataSeek(msql_result,Z_LVAL_P(row)); if ((sql_row=msqlFetchRow(msql_result))==NULL) { /* shouldn't happen? */ RETURN_FALSE; } if (field) { switch(Z_TYPE_P(field)) { case IS_STRING: { int i=0; m_field *tmp_field; char *table_name,*field_name,*tmp; if ((tmp=strchr(Z_STRVAL_P(field),'.'))) { *tmp = 0; table_name = estrdup(Z_STRVAL_P(field)); field_name = estrdup(tmp+1); } else { table_name = NULL; field_name = estrndup(Z_STRVAL_P(field),Z_STRLEN_P(field)); } msqlFieldSeek(msql_result,0); while ((tmp_field=msqlFetchField(msql_result))) { if ((!table_name || !strcasecmp(tmp_field->table,table_name)) && !strcasecmp(tmp_field->name,field_name)) { field_offset = i; break; } i++; } if (!tmp_field) { /* no match found */ php_error(E_WARNING, "%s(): %s%s%s not found in mSQL query index %d", get_active_function_name(TSRMLS_C), (table_name?table_name:""), (table_name?".":""), field_name, Z_LVAL_P(result)); efree(field_name); if (table_name) { efree(table_name); } RETURN_FALSE; } efree(field_name); if (table_name) { efree(table_name); } } break; default: convert_to_long(field); field_offset = Z_LVAL_P(field); if (field_offset<0 || field_offset>=msqlNumFields(msql_result)) { php_error(E_WARNING, "%s(): Bad column offset specified", get_active_function_name(TSRMLS_C)); RETURN_FALSE; } break; } } if (sql_row[field_offset]) { if (PG(magic_quotes_runtime)) { Z_STRVAL_P(return_value) = php_addslashes(sql_row[field_offset],0,&Z_STRLEN_P(return_value),0 TSRMLS_CC); } else { Z_STRLEN_P(return_value) = (sql_row[field_offset]?strlen(sql_row[field_offset]):0); Z_STRVAL_P(return_value) = (char *) safe_estrndup(sql_row[field_offset],Z_STRLEN_P(return_value)); } Z_TYPE_P(return_value) = IS_STRING; } else { ZVAL_FALSE(return_value); }}/* }}} *//* {{{ proto int msql_num_rows(int query) Get number of rows in a result */PHP_FUNCTION(msql_num_rows){ pval *result; m_result *msql_result; m_query *msql_query; if (ZEND_NUM_ARGS()!=1 || getParameters(ht, 1, &result)==FAILURE) { WRONG_PARAM_COUNT; } MSQL_GET_QUERY(result); RETVAL_LONG(msql_result ? msqlNumRows(msql_result) : 0);}/* }}} *//* {{{ proto int msql_num_fields(int query) Get number of fields in a result */PHP_FUNCTION(msql_num_fields){ pval *result; m_result *msql_result; m_query *msql_query; if (ZEND_NUM_ARGS()!=1 || getParameters(ht, 1, &result)==FAILURE) { WRONG_PARAM_COUNT;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -