2016-05-02 56 views
-1

嗨我有一个问题我有一个记录,其中4个表和他们每个涉及到他们的使用lastInsertId采取最后插入的id生成但不过我得到这个小问题。SQLSTATE [HY093]:无效的参数编号PHP PDO + MYSQL -

这是我的代码类:

public function regnuevo($ruc,$pwd,$rsocial,$ncomercial,$direfiscal,$telefono,$web,$rucs,$direfac,$nombre,$paterno,$materno,$cargo,$celular,$email){ 


     try{ 

      $insertar = $this->bd->prepare("INSERT INTO empresa (ruc,pwd,razonsocial,nombrecomercial,direccionfiscal,departamento,distrito,provincia,estado) values (:ruc,:pwd,:rsocial,:ncomercial,:direfiscal,15,1249,129,1)"); 

      $insertar->bindparam(":ruc",$ruc); 
      $insertar->bindparam(":pwd",$pwd); 
      $insertar->bindparam(":rsocial",$rsocial); 
      $insertar->bindparam(":ncomercial",$ncomercial); 
      $insertar->bindparam(":direfiscal",$direfiscal); 
      $insertar->execute(); 
      $ultimoid = $this->bd->lastInsertId(); 

      $insertar = $this->bd->prepare("INSERT INTO empresa_detalle (telefono1,web,ruc,id_empresa) values(:telefonos,:web,:ruc,:id_emp)"); 
      $insertar->bindparam(":telefonos",$telefono); 
      $insertar->bindparam(":web",$web); 
      $insertar->bindparam(":ruc",$rucs); 
      $insertar->bindparam(":id_emp",$ultimoid); 
      $insertar->execute(); 

      $insertar = $this->bd->prepare("INSERT INTO datosfacturacion (direccion,id_empresa) values(:dire,:id_empf)"); 
      $insertar->bindparam(":dire",$direfac); 
      $insertar->bindparam(":id_empf",$ultimoid); 
      $insertar->execute(); 

      $insertar1 = $this->bd->prepare("INSERT INTO socios(nombre,apaterno,amaterno,cargo,grado,tipodocumento,genero,celular,correooficina,estado,id_empresa) values(:nombre,:apaterno,:amaterno,:cargo,1,1,1,:telefono,:email,'1',:id_empresa)"); 

      $insertar1->execute(array(":nombre" => $nombre, 
            "apaterno"=>$paterno, 
            ":materno"=>$materno, 
            ":cargo"=>$cargo, 
            ":celular"=>$celular, 
            ":id_empresa"=>$ultimoid, 
            ":email"=>$email)); 

       return true; 

     } 
     catch(PDOException $e) { 


      echo $e->getMessage(); 
      return false; 
    } 

这是一个表单:

<div class="container"> 
    <form action="reg_nuevo.php" class="form-horizontal" method="post"> 
     <div class="form-group"> 
      <p class="txticon"><span class="glyphicon glyphicon-plus-sign iconos"></span> Registro de Nuevo Socio</p> 
      *Solo se puede registrar 3 socios por empresa en caso de tener 4 socios comuniquese con el área de Sistemas 
     </div> 
     <div class="form-group"> 
      <label for="" class="control-label col-md-2">R.U.C</label> 
      <div class="col-md-3"> 
       <input type="text" class="form-control" name="ruc"> 
      </div> 
      <label for="" class="control-label col-md-2">Razón Social</label> 
      <div class="col-md-3"> 
       <input type="text" class="form-control" name="raz"> 
      </div> 
     </div> 

     <div class="form-group"> 
      <label for="" class="control-label col-md-2">Nombre Comercial</label> 
      <div class="col-md-3"> 
       <input type="text" class="form-control" name="comercial"> 
      </div> 
       <label for="" class="control-label col-md-2">Dirección Fiscal</label> 
      <div class="col-md-3"> 
       <input type="text" class="form-control" name="direccion"> 
      </div> 
     </div> 

     <div class="form-group"> 
      <label for="" class="control-label col-md-2">Telefono</label> 
      <div class="col-md-3"> 
       <input type="text" class="form-control" name="telefono"> 
      </div> 
      <label for="" class="control-label col-md-2">Dirección de entrega de Factura</label> 
      <div class="col-md-3"> 
       <input type="text" class="form-control" name="facturacion"> 
      </div> 
     </div> 


     <div class="form-group"> 
      <label for="" class="control-label col-md-2">Web</label> 
      <div class="col-md-3"> 
       <input type="text" class="form-control" name="web"> 
      </div> 
     </div> 

     <div class="form-group col-md-12"> 
     <div class="form-group child col-md-12"> 
      <p class="txticon"><span class="glyphicon glyphicon-user iconos"></span>Registro de Socio</p> 

      <div class="form-group"> 
      <label for="" class="control-label col-md-1">Nombre</label> 
      <div class="col-md-2"> 
       <input type="text" class="form-control" name="socio"> 
      </div> 
      <label for="" class="control-label col-md-1">A.Paterno</label> 
      <div class="col-md-2"> 
       <input type="text" class="form-control" name="paterno"> 
      </div> 
      <label for="" class="control-label col-md-1">A.Materno</label> 
      <div class="col-md-2"> 
       <input type="text" class="form-control" name="materno"> 
      </div> 
     </div> 

     <div class="form-group"> 
      <label for="" class="control-label col-md-1">Cargo</label> 
      <div class="col-md-2"> 
       <input type="text" class="form-control" name="cargo"> 
      </div> 
      <label for="" class="control-label col-md-1">Email</label> 
      <div class="col-md-2"> 
       <input type="email" class="form-control" name="email"> 
      </div> 
      <label for="" class="control-label col-md-1">Telefono</label> 
      <div class="col-md-2"> 
       <input type="text" class="form-control" name="celular"> 
      </div> 
     </div> 
    <!--<input class="btn btn-danger deleteButton cerrar" type="button" value="Eliminar" />--> 
</div> 
</div> 
<!--<input class="btn btn-success cerrar" type="button" id="create_button" value="Agregar Socio" />--> 
<input class="btn btn-lg btn-info" type="submit" value="Registrar" name="enviar"> 
     </form> 
+0

修复' “apaterno”=> $帕特诺,'到' “:apaterno”=> $ paterno,' – Armen

+1

@Armen不需要http://stackoverflow.com/q/9778887/只有在值是冒号需要。 –

+0

ok @ Fred-ii-谢谢你我不知道 – Armen

回答

1

的最后一次插入错误,缺少两个命名的盲孔,:celular(也许是cou LD是:telefono),:materno:amaterno)不存在

 $insertar1 = $this->bd->prepare("INSERT INTO socios(nombre,apaterno,amaterno,cargo,grado,tipodocumento,genero,celular,correooficina,estado,id_empresa) 
     values(:nombre,:apaterno,:amaterno,:cargo,1,1,1,:telefono,:email,'1',:id_empresa)"); 

$insertar1->execute(array(":nombre" => $nombre, 
           "apaterno"=>$paterno, 
           ":materno"=>$materno, 
           ":cargo"=>$cargo, 
           ":celular"=>$celular, 
           ":id_empresa"=>$ultimoid, 
           ":email"=>$email)); 

要解决只是匹配数组键的名称与占位:

$insertar1->execute(array(":nombre" => $nombre, 
           "apaterno"=>$paterno, 
           ":amaterno"=>$materno, 
           ":cargo"=>$cargo, 
           ":telefono"=>$celular, 
           ":id_empresa"=>$ultimoid, 
           ":email"=>$email)); 
+0

@EdinsonGutierrezVargas你说,错误是插入到socios之前? – rray

+0

是的,错误是当它到达插入jQuery的社会但empresa,empresa_detalle和facturacion插入但不是socios表:/ –

+0

@EdinsonGutierrezVargas修改后,错误信息是一样的? – rray

1

你混合参数了::celular应该:telefono。并且:materno应该在您的$insertar1查询中为:amaterno

看起来你需要通过添加一个 ::apaterno

像这样来解决 "apaterno"=>$paterno,":apaterno"=>$paterno, (回复:Is the leading colon for parameter names passed to PDOStatement::bindParam() optional?

的完整代码变为:

$insertar1 = $this->bd->prepare(
    "INSERT INTO socios(
     nombre, 
     apaterno, 
     amaterno, 
     cargo, 
     grado, 
     tipodocumento, 
     genero, 
     celular, 
     correooficina, 
     estado, 
     id_empresa 
    ) values (
     :nombre, 
     :apaterno, 
     :amaterno, 
     :cargo, 
     1, 
     1, 
     1, 
     :telefono, 
     :email, 
     '1', 
     :id_empresa 
    )" 
); 

$insertar1->execute(array(":nombre" => $nombre, 
          ":apaterno"=>$paterno, 
          ":amaterno"=>$materno, 
          ":cargo"=>$cargo, 
          ":telefono"=>$celular, 
          ":email"=>$email, 
          ":id_empresa"=>$ultimoid 
)); 
+0

不需要http://stackoverflow.com/q/9778887/只有在值是冒号需要根据您的原始http://stackoverflow.com/revisions/36989101/1 –

+0

添加:一类但问题仍然存在 –

+0

@Fred -ii-虽然它*可能*工作(我从未亲自测试过,所以我不能说话),但我建议不要这样做。该手册没有说明冒号可以被排除在绑定之外,所以最好与此相符。但是,谢谢你指出。 – Marcus

相关问题