PHP PDO:为什么我的代码不能插入具有不同值的多行?

时间:2012-11-26 02:59:10

标签: php mysql pdo rows

我尝试插入具有不同值的多行,但我不知道为什么不起作用

$id_poliza = $this->dbConnect->lastInsertId(); //With this, I save last insert id from last executed sql statement.

if($this->dataNewPoliza['d724'] == 'on')
    $disp1 = 1;
else
    $disp1 = 0;
if($this->dataNewPoliza['d58'] == 'on')
    $disp2 = 1;
else
    $disp2 = 0;
if(($this->dataNewPoliza['especial']) == '')
    $disp3 = 0;
else
    $disp3 = $this->dataNewPoliza['especial'];

if(($this->dataNewPoliza['ticket']) == '')
    $disp4 = 0;
else
    $disp4 = $this->dataNewPoliza['ticket'];

$sqlDispPol = "INSERT INTO disponibilidad_poliza (Id_Poliza, Id_Disponibilidad, Valor)
    VALUES (:idP,:idD1,:val1), 
           (:idP,:idD2,:val2), 
           (:idP,:idD3,:val3),
           (:idP,:idD4,:val4)";
$resultDisp = $this->dbConnect->prepare($sqlDispPol) or die ($sqlDispPol);

$resultDisp->bindParam(':idP',$id_poliza,PDO::PARAM_INT);

$resultDisp->bindParam(':idD1',1,PDO::PARAM_INT);
$resultDisp->bindParam(':val1',$disp1,PDO::PARAM_STR);

$resultDisp->bindParam(':idD2',2,PDO::PARAM_INT);
$resultDisp->bindParam(':val2',$disp2,PDO::PARAM_STR);

$resultDisp->bindParam(':idD3',3,PDO::PARAM_INT);
$resultDisp->bindParam(':val3',$disp3,PDO::PARAM_STR);

$resultDisp->bindParam(':idD4',4,PDO::PARAM_INT);
$resultDisp->bindParam(':val4',$disp4,PDO::PARAM_STR);

if($resultDisp->execute()) {
         //more code
    }

我希望从此表单中保存:

表disponibilidad_poliza

Id_Poliza     Id_Disponibilidad   Valor
________________________________________
   1                1               1
   1                2               0
   1                3               especial10
   1                4               7

Note: $disp1 and $disp2 are checkboxes, $disp3 and $disp4 are inputs text

也许这种方式是不正确的,我鼓掌如果你换另一种方式来做这件事。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

使用bindValue()而不是bindParam()。它采用相同的参数,但可以使用原始整数和其他标量。方法bindParam()需要显式地绑定一个参数,从我看到的你不需要使用它。