【问题标题】:Tried to bind parameter number 0. SQL Server supports a maximum of 2100 parameters尝试绑定参数号 0。SQL Server 最多支持 2100 个参数
【发布时间】:2017-08-13 18:06:31
【问题描述】:

我目前正在使用在 MySQL 上完美运行的 PDO 类。但是对于 MSSQL ,当我尝试通过 bindValue() 函数插入数据时出现错误。

我正在使用这种方法进行数据绑定:

bindValue(":param",$value)

第 1 步 - 为查询中的表字段创建一个数组

$counter = 0;
        foreach($fields as $cols)
        {
            $fieldBind[$counter] = ":".$cols;
            $new_f =  $new_f ."". $cols;
            $counter ++;
            if($counter!=count($fields))
            {
                $new_f = $new_f.",";
            }
        }


output : (
[0] => :field1
[1] => :field2
[2] => :field3
)

第 2 步 - 为查询中的字段数据创建一个数组

$counter2 = 0;
        foreach($data as $cols)
        {
            $dataBind[$counter2] = $cols;
            $new_d =  $new_d."'".$cols."'";
            $counter2 ++;
            if($counter2!=count($data))
            {
                $new_d = $new_d.",";
            }
        }

output : ( [0] => value1 [1] => value2  [2] => value3 )

第 3 步 - 通过 query 函数准备查询

parent::query("INSERT INTO $table($new_f) VALUES($new_d)");

第 4 步 - 绑定参数和值

for($i=0;$i<count($data);$i++){
            parent::bind($fieldBind[$i],$dataBind[$i]);
        }

查询如下所示:

INSERT INTO table(field1,field2,field3) values(':value1',':value2',':value3')

第 5 步 - 执行查询

try { 
            parent::execute();
            return parent::rowCount();
            }
        catch(PDOException $e) {
            echo $e->getMessage();
        }

此方法在 MySQL 上运行良好,但当我尝试在 SQL Server 上执行此方法时,我收到此错误:

SQLSTATE[IMSSP]:尝试绑定参数号 0。SQL Server 最多支持 2100 个参数。

【问题讨论】:

  • 从 debugDumpParams 函数返回这个; SQL: [72] INSERT INTO dbo._Bakiye(StrUserID,BakiyeTL) VALUES(:StrUserID,:BakiyeTL) 参数:2 键:名称:[10] :StrUserID paramno=0 name=[10] ":StrUserID" is_param=1 param_type=2 键:名称:[9] :BakiyeTL paramno=1 name=[9] ":BakiyeTL" is_param=1 param_type=2
  • nvm 伙计们。这就是 TRANSACTION 的全部内容:@@@ 问题已解决。

标签: mysql sql-server pdo


【解决方案1】:

尝试删除撇号''

来自:

INSERT INTO table(field1,field2,field3) values(':value1',':value2',':value3')

到以下:

INSERT INTO table(field1,field2,field3) values(:value1,:value2,:value3)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-22
    • 2021-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多