Php Yii中的多个SQL语句
我试图在yii中执行多个sql语句,这是为了减少到服务器的往返。这是一个叫做生态位专业化的领域。一个用户最多允许输入三个条目,但是该字段是可选的。代码如下:Php Yii中的多个SQL语句,php,sql,yii,composite-primary-key,Php,Sql,Yii,Composite Primary Key,我试图在yii中执行多个sql语句,这是为了减少到服务器的往返。这是一个叫做生态位专业化的领域。一个用户最多允许输入三个条目,但是该字段是可选的。代码如下: $sql = " Delete from cur_niche where userid =:id ; " ; $var2 = array_filter($object->nspecial) ; if(!empty($var2)) {
$sql = " Delete from cur_niche
where userid =:id ; " ;
$var2 = array_filter($object->nspecial) ;
if(!empty($var2))
{ $str = "" ;
$i = 0 ;
foreach($var2 as $n)
{ if($i==0)
$str.= "(:id,:n".$i.")" ;
else
$str.= ", (:id,:n".$i.")" ;
$i++ ;
}
$sql .= "Insert into cur_niche (userid,nspecial) Values ".$str." ; " ;
}
$command = Yii::app()->db->createCommand($sql) ;
$command->bindParam(":id",$id,PDO::PARAM_STR) ;
if(!empty($var2))
{ $i = 0 ;
foreach($var2 as $n)
{
$str = ":n".$i ;
$command->bindParam($str,$n,PDO::PARAM_STR) ;
$i++ ;
}
}
$result = $command->execute() && $result ;
我已尝试转储所有变量,sql语句格式正确,$object具有表单中的正确数据,$str在绑定中工作正常。
然而,我面临以下问题:
1) 如果利基特殊化数组($object->nspecial)中只有一个条目,则该条目工作正常。
2) 但是,如果填充了多个字段,则无法执行插入,这是因为userid和nspecial字段构成了一个复合主键
复合主键是否依赖于形成唯一组合的两个值(假设用户在各个字段中输入唯一值)?
如果我删除主键约束,它只会在数据库中复制一个字段和两行的值。我在这里做错了什么?发现了错误。对于'foreach'循环,我应该按值绑定,而不是按参数绑定,因为它引用了参数的最新值,从而复制了值