1

尝试创建一个函数来为 mssql_bind 键入更少的代码我希望使用这个二维数组:

Array
(
    [0] => Array
        (
            [0] => SIZECODENO
            [1] => SQLVARCHAR
        )
    [1] => Array
        (
            [0] => SIZECODE
            [1] => SQLVARCHAR
        )
    [..] => Array
        (
           .....
        )
)

通过像这样使用 for 循环:

for($x=0;$x<count($array);$x++) {
    mssql_bind ($sp,"@".$array[$x][0],$_GET[$array[$x][0]], $array[$x][1]);
}

它在 for 循环运行的所有 mssql_bind 命令上返回不支持的类型错误。

而如果我将 $array[$x][1] 替换为 SQLVARCHAR 它会立即接受它

4

1 回答 1

0

我只好通过一个开关盒运行它。我的猜测是它被视为一个字符串,并且“mssql_bind”不希望字符串存​​在。

不过,我希望有更好的方法来做到这一点

for($x=0;$x<count($array);$x++){
    switch($array[$x][1]) {
        case $array[$x][1]=='SQLVARCHAR':
            mssql_bind ($sp,"@".$array[$x][0],$_GET[$array[$x][0]], SQLVARCHAR);
            break;
        case $array[$x][1]=='SQLINT2':
            mssql_bind ($sp,"@".$array[$x][0],$_GET[$array[$x][0]], SQLINT2);
            break;
        case $array[$x][1]=='SQLCHAR':
            mssql_bind ($sp,"@".$array[$x][0],$_GET[$array[$x][0]], SQLCHAR);
            break;
        case $array[$x][1]=='SQLTEXT':
            mssql_bind ($sp,"@".$array[$x][0],$_GET[$array[$x][0]], SQLTEXT);
            break;
        //... more cases that corresponds to datatypes  ...
    }

}
于 2017-05-12T03:32:05.373 回答