【问题标题】:Multiple SQL statements In YiiYii 中的多个 SQL 语句
【发布时间】:2012-10-15 10:53:29
【问题描述】:

我正在尝试在 yii 中执行多个 sql 语句,这是为了减少到服务器的往返行程。这是针对一个称为利基专业化的领域。一个用户最多可以输入三个条目,但是该字段是可选的。这是代码:

$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 字段形成了复合主键。

复合主键是否依赖于形成唯一组合的两个值(假设用户在各个字段中输入唯一值)? 如果我删除主键约束,它只会复制数据库中包含两行的一个字段的值。我在这里做错了什么?

【问题讨论】:

    标签: php sql yii composite-primary-key


    【解决方案1】:

    发现错误。对于“foreach”循环,我应该按值而不是按参数绑定,因为它引用参数的最新值,因此重复值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-05
      • 2019-04-15
      • 2018-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多