【发布时间】: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