首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Windows上为php 8.0.12编译SAP SqlAnywhere扩展

在Windows上为php 8.0.12编译SAP SqlAnywhere扩展
EN

Stack Overflow用户
提问于 2021-12-04 11:56:50
回答 2查看 202关注 0票数 1

我正在尝试编译SAP扩展,以便与PHP8.0.12一起使用;这个扩展的源代码是我从SqlAnywhere下载的。这个站点已经为各种版本的PHP编译了扩展版本,直到PHP7.4。由于我们目前在开发服务器上使用PHP8.0.12,所以我想为这个版本或PHP8.0.13构建这个扩展。

在安装了Visual Studio 2019 (包括Visual C++ 2015-2022 Redistributablegit )之后,我设法在Windows 10上正确地设置了开发环境。使用此环境,我能够在没有问题的情况下构建PHP7.4的扩展,但是当我尝试为PHP8.0.12构建时,我会得到以下错误报告:

代码语言:javascript
复制
$ nmake

Microsoft (R) Program Maintenance Utility Version 14.29.30137.0
Copyright (C) Microsoft Corporation.  All rights reserved.

sacapidll.c
sqlany_dbg.c
sqlanywhere.c
ext\sqlanywhere\sqlanywhere.c(773): error C2146: syntax error: missing ')' before identifier 'TSRMLS_DC'
ext\sqlanywhere\sqlanywhere.c(773): error C2061: syntax error: identifier 'TSRMLS_DC'
ext\sqlanywhere\sqlanywhere.c(773): error C2059: syntax error: ';'
ext\sqlanywhere\sqlanywhere.c(773): error C2059: syntax error: ')'
ext\sqlanywhere\sqlanywhere.c(775): error C2449: found '{' at file scope (missing function header?)
ext\sqlanywhere\sqlanywhere.c(780): error C2059: syntax error: '}'
ext\sqlanywhere\sqlanywhere.c(1002): error C2146: syntax error: missing ')' before identifier 'TSRMLS_DC'
ext\sqlanywhere\sqlanywhere.c(1002): error C2061: syntax error: identifier 'TSRMLS_DC'
ext\sqlanywhere\sqlanywhere.c(1002): error C2059: syntax error: ';'
ext\sqlanywhere\sqlanywhere.c(1002): error C2059: syntax error: ')'
ext\sqlanywhere\sqlanywhere.c(1004): error C2449: found '{' at file scope (missing function header?)
ext\sqlanywhere\sqlanywhere.c(1007): error C2059: syntax error: '}'
ext\sqlanywhere\sqlanywhere.c(1194): error C2146: syntax error: missing ')' before identifier 'TSRMLS_CC'
ext\sqlanywhere\sqlanywhere.c(1194): error C2198: 'php_error_docref': too few arguments for call
ext\sqlanywhere\sqlanywhere.c(1246): error C2146: syntax error: missing ')' before identifier 'TSRMLS_CC'
ext\sqlanywhere\sqlanywhere.c(1246): error C2198: 'php_error_docref': too few arguments for call
ext\sqlanywhere\sqlanywhere.c(1258): error C2146: syntax error: missing ')' before identifier 'TSRMLS_CC'
ext\sqlanywhere\sqlanywhere.c(1258): error C2198: 'php_error_docref': too few arguments for call
ext\sqlanywhere\sqlanywhere.c(1306): error C2146: syntax error: missing ')' before identifier 'TSRMLS_CC'
ext\sqlanywhere\sqlanywhere.c(1306): error C2059: syntax error: ')'
ext\sqlanywhere\sqlanywhere.c(1347): error C2146: syntax error: missing ')' before identifier 'TSRMLS_CC'
ext\sqlanywhere\sqlanywhere.c(1347): error C2198: 'php_error_docref': too few arguments for call
ext\sqlanywhere\sqlanywhere.c(1415): error C2146: syntax error: missing ')' before identifier 'TSRMLS_CC'
ext\sqlanywhere\sqlanywhere.c(1415): error C2198: 'php_error_docref': too few arguments for call
ext\sqlanywhere\sqlanywhere.c(1462): error C2146: syntax error: missing ')' before identifier 'TSRMLS_CC'
ext\sqlanywhere\sqlanywhere.c(1462): error C2059: syntax error: ')'
ext\sqlanywhere\sqlanywhere.c(1540): error C2146: syntax error: missing ')' before identifier 'TSRMLS_CC'
ext\sqlanywhere\sqlanywhere.c(1540): error C2198: 'php_error_docref': too few arguments for call
ext\sqlanywhere\sqlanywhere.c(1678): error C2146: syntax error: missing ')' before identifier 'TSRMLS_CC'
ext\sqlanywhere\sqlanywhere.c(1677): error C2198: 'zend_fetch_resource2_ex': too few arguments for call
ext\sqlanywhere\sqlanywhere.c(1678): error C2059: syntax error: ')'
ext\sqlanywhere\sqlanywhere.c(1699): error C2146: syntax error: missing ')' before identifier 'TSRMLS_CC'
ext\sqlanywhere\sqlanywhere.c(1699): error C2198: 'php_error_docref': too few arguments for call
ext\sqlanywhere\sqlanywhere.c(1725): error C2146: syntax error: missing ')' before identifier 'TSRMLS_DC'
ext\sqlanywhere\sqlanywhere.c(1725): error C2061: syntax error: identifier 'TSRMLS_DC'
ext\sqlanywhere\sqlanywhere.c(1725): error C2059: syntax error: ';'
ext\sqlanywhere\sqlanywhere.c(1725): error C2059: syntax error: ')'
ext\sqlanywhere\sqlanywhere.c(1727): error C2449: found '{' at file scope (missing function header?)
ext\sqlanywhere\sqlanywhere.c(1763): error C2059: syntax error: '}'
ext\sqlanywhere\sqlanywhere.c(1855): error C2146: syntax error: missing ')' before identifier 'TSRMLS_CC'
ext\sqlanywhere\sqlanywhere.c(1854): error C2198: 'zend_fetch_resource2_ex': too few arguments for call
ext\sqlanywhere\sqlanywhere.c(1855): error C2059: syntax error: ')'
ext\sqlanywhere\sqlanywhere.c(1866): error C2146: syntax error: missing ')' before identifier 'TSRMLS_CC'
ext\sqlanywhere\sqlanywhere.c(1866): error C2059: syntax error: ')'
ext\sqlanywhere\sqlanywhere.c(1870): error C2059: syntax error: 'while'
ext\sqlanywhere\sqlanywhere.c(1870): error C2059: syntax error: 'return'
ext\sqlanywhere\sqlanywhere.c(1870): error C2059: syntax error: '}'
ext\sqlanywhere\sqlanywhere.c(1871): error C2059: syntax error: '}'
ext\sqlanywhere\sqlanywhere.c(1878): error C2099: initializer is not a constant
ext\sqlanywhere\sqlanywhere.c(1880): error C2143: syntax error: missing '{' before '->'
ext\sqlanywhere\sqlanywhere.c(1880): error C2059: syntax error: '->'
ext\sqlanywhere\sqlanywhere.c(1884): error C2143: syntax error: missing '{' before '->'
ext\sqlanywhere\sqlanywhere.c(1884): error C2059: syntax error: '->'
ext\sqlanywhere\sqlanywhere.c(1885): error C2143: syntax error: missing '{' before '->'
ext\sqlanywhere\sqlanywhere.c(1885): error C2059: syntax error: '->'
ext\sqlanywhere\sqlanywhere.c(1886): error C2143: syntax error: missing '{' before '->'
ext\sqlanywhere\sqlanywhere.c(1886): error C2059: syntax error: '->'
ext\sqlanywhere\sqlanywhere.c(1887): error C2143: syntax error: missing '{' before '->'
ext\sqlanywhere\sqlanywhere.c(1887): error C2059: syntax error: '->'
ext\sqlanywhere\sqlanywhere.c(1888): error C2143: syntax error: missing '{' before '->'
ext\sqlanywhere\sqlanywhere.c(1888): error C2059: syntax error: '->'
ext\sqlanywhere\sqlanywhere.c(1889): error C2143: syntax error: missing '{' before '->'
ext\sqlanywhere\sqlanywhere.c(1889): error C2059: syntax error: '->'
ext\sqlanywhere\sqlanywhere.c(1891): error C2059: syntax error: 'if'
ext\sqlanywhere\sqlanywhere.c(1903): warning C4047: 'function': 'sqlany_result_t *' differs in levels of indirection from 'int'
ext\sqlanywhere\sqlanywhere.c(1903): warning C4024: 'cache_result': different types for formal and actual parameter 1
ext\sqlanywhere\sqlanywhere.c(1903): error C2099: initializer is not a constant
ext\sqlanywhere\sqlanywhere.c(1904): error C2059: syntax error: 'if'
ext\sqlanywhere\sqlanywhere.c(1907): error C2059: syntax error: 'else'
ext\sqlanywhere\sqlanywhere.c(1910): error C2059: syntax error: 'if'
ext\sqlanywhere\sqlanywhere.c(1920): error C2059: syntax error: 'else'
ext\sqlanywhere\sqlanywhere.c(1932): error C2059: syntax error: 'if'
ext\sqlanywhere\sqlanywhere.c(1933): error C2059: syntax error: 'do'
ext\sqlanywhere\sqlanywhere.c(1933): error C2059: syntax error: 'while'
ext\sqlanywhere\sqlanywhere.c(1939): error C2059: syntax error: '}'
ext\sqlanywhere\sqlanywhere.c(2062): error C2146: syntax error: missing ')' before identifier 'TSRMLS_CC'
ext\sqlanywhere\sqlanywhere.c(2061): error C2198: 'zend_fetch_resource2_ex': too few arguments for call
ext\sqlanywhere\sqlanywhere.c(2062): error C2059: syntax error: ')'
ext\sqlanywhere\sqlanywhere.c(2072): error C2146: syntax error: missing ')' before identifier 'TSRMLS_CC'
ext\sqlanywhere\sqlanywhere.c(2072): error C2198: 'php_error_docref': too few arguments for call
ext\sqlanywhere\sqlanywhere.c(2077): error C2146: syntax error: missing ')' before identifier 'TSRMLS_CC'
ext\sqlanywhere\sqlanywhere.c(2077): error C2198: 'php_error_docref': too few arguments for call
ext\sqlanywhere\sqlanywhere.c(2129): error C2146: syntax error: missing ')' before identifier 'TSRMLS_CC'
ext\sqlanywhere\sqlanywhere.c(2128): error C2198: 'zend_fetch_resource2_ex': too few arguments for call
ext\sqlanywhere\sqlanywhere.c(2129): error C2059: syntax error: ')'
ext\sqlanywhere\sqlanywhere.c(2139): error C2146: syntax error: missing ')' before identifier 'TSRMLS_CC'
ext\sqlanywhere\sqlanywhere.c(2139): error C2198: 'php_error_docref': too few arguments for call
ext\sqlanywhere\sqlanywhere.c(2192): error C2146: syntax error: missing ')' before identifier 'TSRMLS_CC'
ext\sqlanywhere\sqlanywhere.c(2191): error C2198: 'zend_fetch_resource_ex': too few arguments for call
ext\sqlanywhere\sqlanywhere.c(2192): error C2059: syntax error: ')'
ext\sqlanywhere\sqlanywhere.c(2227): error C2146: syntax error: missing ')' before identifier 'TSRMLS_CC'
ext\sqlanywhere\sqlanywhere.c(2226): error C2198: 'zend_fetch_resource_ex': too few arguments for call
ext\sqlanywhere\sqlanywhere.c(2227): error C2059: syntax error: ')'
ext\sqlanywhere\sqlanywhere.c(2237): error C2146: syntax error: missing ')' before identifier 'TSRMLS_CC'
ext\sqlanywhere\sqlanywhere.c(2237): error C2198: 'php_error_docref': too few arguments for call
ext\sqlanywhere\sqlanywhere.c(2266): error C2146: syntax error: missing ')' before identifier 'TSRMLS_CC'
ext\sqlanywhere\sqlanywhere.c(2265): error C2198: 'zend_fetch_resource_ex': too few arguments for call
ext\sqlanywhere\sqlanywhere.c(2266): error C2059: syntax error: ')'
ext\sqlanywhere\sqlanywhere.c(2289): error C2146: syntax error: missing ')' before identifier 'TSRMLS_CC'
ext\sqlanywhere\sqlanywhere.c(2288): error C2198: 'zend_fetch_resource2_ex': too few arguments for call
ext\sqlanywhere\sqlanywhere.c(2289): error C2059: syntax error: ')'
ext\sqlanywhere\sqlanywhere.c(2318): error C2146: syntax error: missing ')' before identifier 'TSRMLS_CC'
ext\sqlanywhere\sqlanywhere.c(2317): error C2198: 'zend_fetch_resource2_ex': too few arguments for call
ext\sqlanywhere\sqlanywhere.c(2318): fatal error C1003: error count exceeds 100; stopping compilation
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\HostX86\x86\cl.exe"' : return code '0x2'
Stop.

显然,PHP8.0.12内核中缺少了一些东西,它存在于PHP7.4中--我认为这与未定义TSRMLS_DC有关,因为这是首先报告的错误。

有人能说明一下这个错误/这些错误吗?让我知道是否有办法解决缺少的依赖关系,这样这个扩展就可以正确构建了吗?

EN

回答 2

Stack Overflow用户

发布于 2021-12-13 18:39:45

我在本站上找到了答案。编译器抱怨的TSRMLS_DC是以前需要的Thread-Safe Resource Manager宏,但不再需要PHP8。这些宏可以从代码中删除。

删除这些宏后,源代码将编译,但当扩展运行时,PHP将发出许多警告,如以下警告:

代码语言:javascript
复制
Warning: Missing arginfo for sqlanywhere_connect() in Unknown on line 0
Warning: Missing arginfo for sqlanywhere_commit() in Unknown on line 0

这些警告的原因是PHP8更严格地要求对所有扩展函数进行arginfo定义。

您可以为所有函数定义这些块,如上面的链接所述,以消除这些警告。

票数 1
EN

Stack Overflow用户

发布于 2022-03-11 22:01:08

一步一步的解决方案,但对Linux来说,问题是关于Windows的,但通过处理PHP8代码片段所需的内容,可以节省一些时间。带有括号的附件在有序列表下面:

  1. 下载源代码(a)
  2. 创建Dockerfile (b)
  3. 将未打包的源目录放在与docker文件相同的路径中,因此文件和目录相邻。
  4. sasql_php/sqlanywhere.c后添加(c),行24.
  5. ...and添加(d)右在(!) 第二(!)词组ZEND_BEGIN_ARG_INFO(arginfo_sasql_stmt_bind_param_ex, 0).
  6. ...and将以zend_function_entry sqlanywhere_functions[] = {开头的整个部分替换为(E).
  7. ...and将if( object_init( return_value ) == FAILURE ) { RETURN_FALSE; }一节(只需查找短语object_init)替换为object_init( return_value );
  8. 在终端中,在带有停靠文件的路径中运行docker build -t php-sqlanywhere12-compiler:8.0-cli-alpine .
  9. 通过类似于docker run --rm -v "/path/on/the/host:/module" php-sqlanywhere12-compiler:8.0-cli-alpine /bin/sh -c "cp /sasql_php/modules/sqlanywhere.so /module/php-8.0.0_sqlanywhere.so"的方法提取编译后的模块
  10. 您应该使用/path/on/the/host中的编译模块

( a) https://wiki.scn.sap.com/wiki/display/SQLANY/The+SAP+SQL+Anywhere+PHP+Module -在最底层

b)

代码语言:javascript
复制
FROM debian:11

RUN apt update && \
    apt install -y build-essential autoconf automake bison \
                   flex re2c gdb libtool make pkgconf \
                   valgrind git libxml2-dev libsqlite3-dev

RUN git clone https://github.com/php/php-src.git && \
    cd ./php-src && \
    git checkout PHP-8.0.12

WORKDIR /php-src

RUN ./buildconf --force && \
    ./configure --prefix=/php && \
    make && \
    make install

ENV PATH="/php/bin:${PATH}"

COPY ./sasql_php /sasql_php

WORKDIR /sasql_php

RUN phpize && \
    ./configure && \
    make && \
    make install

c)

代码语言:javascript
复制
#ifndef TSRMLS_D
#define TSRMLS_D void
#define TSRMLS_DC
#define TSRMLS_C
#define TSRMLS_CC
#define TSRMLS_FETCH()
#endif

d)

代码语言:javascript
复制
ZEND_BEGIN_ARG_INFO(arginfo_sasql_connect, 0)
  ZEND_ARG_INFO(0, con_str)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_pconnect, 0)
  ZEND_ARG_INFO(0, con_str)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_pconnect_from_sqlca, 0)
  ZEND_ARG_INFO(0, sqlca)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_close, 0)
  ZEND_ARG_INFO(0, conn)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_query, 0)
  ZEND_ARG_INFO(0, conn)
  ZEND_ARG_INFO(0, sql_str)
  ZEND_ARG_INFO(0, result_mode)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_real_query, 0)
  ZEND_ARG_INFO(0, conn)
  ZEND_ARG_INFO(0, sql_str)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_store_result, 0)
  ZEND_ARG_INFO(0, conn)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_use_result, 0)
  ZEND_ARG_INFO(0, conn)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_next_result, 0)
  ZEND_ARG_INFO(0, conn)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_set_option, 0)
  ZEND_ARG_INFO(0, conn)
  ZEND_ARG_INFO(0, option)
  ZEND_ARG_INFO(0, value)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_affected_rows, 0)
  ZEND_ARG_INFO(0, conn)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_commit, 0)
  ZEND_ARG_INFO(0, conn)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_rollback, 0)
  ZEND_ARG_INFO(0, conn)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_sqlstate, 0)
  ZEND_ARG_INFO(0, conn)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_data_seek, 0)
  ZEND_ARG_INFO(0, result)
  ZEND_ARG_INFO(0, row_num)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_fetch_array, 0)
  ZEND_ARG_INFO(0, result)
  ZEND_ARG_INFO(0, result_type)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_fetch_assoc, 0)
  ZEND_ARG_INFO(0, result)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_fetch_field, 0)
  ZEND_ARG_INFO(0, result)
  ZEND_ARG_INFO(0, field_offset)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_fetch_object, 0)
  ZEND_ARG_INFO(0, result)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_fetch_row, 0)
  ZEND_ARG_INFO(0, result)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_field_seek, 0)
  ZEND_ARG_INFO(0, result)
  ZEND_ARG_INFO(0, field_offset)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_free_result, 0)
  ZEND_ARG_INFO(0, result)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_num_rows, 0)
  ZEND_ARG_INFO(0, result)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_result_all, 0)
  ZEND_ARG_INFO(0, result)
  ZEND_ARG_INFO(0, html_table_format_string)
  ZEND_ARG_INFO(0, html_table_header_format_string)
  ZEND_ARG_INFO(0, html_table_row_format_string)
  ZEND_ARG_INFO(0, html_table_cell_format_string)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_error, 0)
  ZEND_ARG_INFO(0, conn)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_errorcode, 0)
  ZEND_ARG_INFO(0, conn)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_insert_id, 0)
  ZEND_ARG_INFO(0, conn)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_message, 0)
  ZEND_ARG_INFO(0, conn)
  ZEND_ARG_INFO(0, message)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_prepare, 0)
  ZEND_ARG_INFO(0, conn)
  ZEND_ARG_INFO(0, sql_str)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_field_count, 0)
  ZEND_ARG_INFO(0, conn)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_num_fields, 0)
  ZEND_ARG_INFO(0, result)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_stmt_param_count, 0)
  ZEND_ARG_INFO(0, stmt)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_stmt_execute, 0)
  ZEND_ARG_INFO(0, stmt)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_stmt_close, 0)
  ZEND_ARG_INFO(0, stmt)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_stmt_result_metadata, 0)
  ZEND_ARG_INFO(0, stmt)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_stmt_affected_rows, 0)
  ZEND_ARG_INFO(0, stmt)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_stmt_num_rows, 0)
  ZEND_ARG_INFO(0, stmt)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_stmt_insert_id, 0)
  ZEND_ARG_INFO(0, stmt)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_stmt_send_long_data, 0)
  ZEND_ARG_INFO(0, stmt)
  ZEND_ARG_INFO(0, param_number)
  ZEND_ARG_INFO(0, data)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_stmt_store_result, 0)
  ZEND_ARG_INFO(0, stmt)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_stmt_free_result, 0)
  ZEND_ARG_INFO(0, stmt)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_stmt_reset, 0)
  ZEND_ARG_INFO(0, stmt)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_stmt_fetch, 0)
  ZEND_ARG_INFO(0, stmt)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_stmt_field_count, 0)
  ZEND_ARG_INFO(0, stmt)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_stmt_data_seek, 0)
  ZEND_ARG_INFO(0, stmt)
  ZEND_ARG_INFO(0, offset)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_stmt_next_result, 0)
  ZEND_ARG_INFO(0, stmt)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_stmt_errno, 0)
  ZEND_ARG_INFO(0, stmt)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_stmt_error, 0)
  ZEND_ARG_INFO(0, stmt)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_stmt_sqlstate, 0)
  ZEND_ARG_INFO(0, stmt)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_real_escape_string, 0)
  ZEND_ARG_INFO(0, conn)
  ZEND_ARG_INFO(0, str)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_sasql_get_client_info, 0)
ZEND_END_ARG_INFO()

e)

代码语言:javascript
复制
zend_function_entry sqlanywhere_functions[] = {
    /* connection functions */
PHP_FE(sasql_connect,               arginfo_sasql_connect)
PHP_FE(sasql_pconnect,              arginfo_sasql_pconnect)
PHP_FE(sasql_pconnect_from_sqlca,   arginfo_sasql_pconnect_from_sqlca)
PHP_FE(sasql_close,                 arginfo_sasql_close)
PHP_FE(sasql_query,                 arginfo_sasql_query)
PHP_FE(sasql_real_query,            arginfo_sasql_real_query)
PHP_FE(sasql_store_result,          arginfo_sasql_store_result)
PHP_FE(sasql_use_result,            arginfo_sasql_use_result)
PHP_FE(sasql_next_result,           arginfo_sasql_next_result)
PHP_FE(sasql_set_option,            arginfo_sasql_set_option)
PHP_FE(sasql_affected_rows,         arginfo_sasql_affected_rows)
PHP_FE(sasql_commit,                arginfo_sasql_commit)
PHP_FE(sasql_rollback,              arginfo_sasql_rollback)
PHP_FE(sasql_sqlstate,              arginfo_sasql_sqlstate)

/* result functions */
/*  PHP_FE(sasql_field_tell,            NULL) */
PHP_FE(sasql_data_seek,             arginfo_sasql_data_seek)
PHP_FE(sasql_fetch_array,           arginfo_sasql_fetch_array)
PHP_FE(sasql_fetch_assoc,           arginfo_sasql_fetch_assoc)
/*  PHP_FE(sasql_fetch_field_direct,    NULL) */
PHP_FE(sasql_fetch_field,           arginfo_sasql_fetch_field)
PHP_FE(sasql_fetch_object,          arginfo_sasql_fetch_object)
PHP_FE(sasql_fetch_row,             arginfo_sasql_fetch_row)
PHP_FE(sasql_field_seek,            arginfo_sasql_field_seek)
PHP_FE(sasql_free_result,           arginfo_sasql_free_result)
/*  PHP_FE(sasql_fetch_lengths,         NULL) */
PHP_FE(sasql_num_rows,              arginfo_sasql_num_rows)
PHP_FE(sasql_result_all,            arginfo_sasql_result_all)

/* connection functions */
PHP_FE(sasql_error,                 arginfo_sasql_error)
PHP_FE(sasql_errorcode,             arginfo_sasql_errorcode)
PHP_FE(sasql_insert_id,             arginfo_sasql_insert_id)
PHP_FE(sasql_message,               arginfo_sasql_message)
PHP_FE(sasql_prepare,               arginfo_sasql_prepare)
PHP_FE(sasql_field_count,           arginfo_sasql_field_count)
PHP_FE(sasql_num_fields,            arginfo_sasql_num_fields)

/* statement functions */
PHP_FE(sasql_stmt_param_count,      arginfo_sasql_stmt_param_count)
PHP_FE(sasql_stmt_bind_param_ex,    arginfo_sasql_stmt_bind_param_ex)
PHP_FE(sasql_stmt_bind_param,       arginfo_sasql_stmt_bind_param)
PHP_FE(sasql_stmt_execute,          arginfo_sasql_stmt_execute)
PHP_FE(sasql_stmt_close,            arginfo_sasql_stmt_close)
PHP_FE(sasql_stmt_result_metadata,  arginfo_sasql_stmt_result_metadata)
PHP_FE(sasql_stmt_affected_rows,    arginfo_sasql_stmt_affected_rows)
PHP_FE(sasql_stmt_num_rows,         arginfo_sasql_stmt_num_rows)
PHP_FE(sasql_stmt_insert_id,        arginfo_sasql_stmt_insert_id)
PHP_FE(sasql_stmt_bind_result,      arginfo_sasql_stmt_bind_result)
PHP_FE(sasql_stmt_send_long_data,   arginfo_sasql_stmt_send_long_data)
PHP_FE(sasql_stmt_store_result,     arginfo_sasql_stmt_store_result)
PHP_FE(sasql_stmt_free_result,      arginfo_sasql_stmt_free_result)
PHP_FE(sasql_stmt_reset,            arginfo_sasql_stmt_reset)
PHP_FE(sasql_stmt_fetch,            arginfo_sasql_stmt_fetch)
PHP_FE(sasql_stmt_field_count,      arginfo_sasql_stmt_field_count)
PHP_FE(sasql_stmt_data_seek,        arginfo_sasql_stmt_data_seek)
PHP_FE(sasql_stmt_next_result,      arginfo_sasql_stmt_next_result)
PHP_FE(sasql_stmt_errno,            arginfo_sasql_stmt_errno)
PHP_FE(sasql_stmt_error,            arginfo_sasql_stmt_error)
PHP_FE(sasql_stmt_sqlstate,         arginfo_sasql_stmt_sqlstate)

/* misc functions */
PHP_FE(sasql_real_escape_string,    arginfo_sasql_real_escape_string)
PHP_FE(sasql_get_client_info,       arginfo_sasql_get_client_info)


/* Aliases */
PHP_FALIAS(sasql_disconnect,        sasql_close,                arginfo_sasql_close)
PHP_FALIAS(sasql_escape_string,     sasql_real_escape_string,   arginfo_sasql_real_escape_string)
PHP_FALIAS(sasql_multi_query,       sasql_real_query,           arginfo_sasql_real_query)
{NULL, NULL, NULL}  
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70225366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档