SQLSTATE[HY093]:参数号PHP-PDO+无效;MYSQL-form

SQLSTATE[HY093]:参数号PHP-PDO+无效;MYSQL-form,php,mysql,pdo,Php,Mysql,Pdo,您好,我有一个问题,我有一个记录,其中有4个表,每个表都与使用lastInsertId获取生成的最后一个插入id有关,但我还是遇到了这个小问题 这是我的代码类: public function regnuevo($ruc,$pwd,$rsocial,$ncomercial,$direfiscal,$telefono,$web,$rucs,$direfac,$nombre,$paterno,$materno,$cargo,$celular,$email){ try{

您好,我有一个问题,我有一个记录,其中有4个表,每个表都与使用lastInsertId获取生成的最后一个插入id有关,但我还是遇到了这个小问题

这是我的代码类:

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>

新社会福利登记处

*一名注册官,3名在tener住宅区工作的社会人士,4名在系统工程区工作的社会团体 中华民国 拉松社会 名义商业 Dirección财政部 电传 工厂管理局 网状物 社会登记处

名义 A.帕特诺 马特诺 货物 电子邮件 电传
您正在混合参数:
:celular
应该是
:telefono
。在
$insertar1
查询中,
:materno
应该是
:amaterno

看起来您需要通过向
:apaterno添加
来修复
“apaterno”=>$paterno,

像这样:
“:apaterno”=>$paterno,
(Re:)

完整代码变为:

$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
));

最后一次插入错误,缺少两个命名的PlacedHolder,
:celular
(可能是
: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));

修复
“apaterno”=>$paterno,
“:apaterno”=>$paterno,
@Armen不仅在需要冒号的值中是必需的。好的@Fred ii-谢谢你,我不知道that@Armen不客气。根据您最初的add:a类,不仅在值中需要冒号,而且在问题中也需要冒号continues@Fred-ii-虽然它可能会起作用(我从未亲自测试过这一点,因此我无法与之交谈),我建议不要忽略它们。手册没有说明可以在绑定中省略冒号,因此最好是这样。但感谢您指出。您无需测试它,Marcus,这是一个鲜为人知的“事实”;-)看看所有的链接,哈哈。我必须测试才能确定;)我就是这么做的。但不是说我不同意你。别误会。@EdinsonGutierrezVargas你说,错误在插入socios之前?是的,错误是在它到达insert jquery socios时发生的,但是empresa、empresa_detalle和facturacion inserts但不是socios表:/@EdinsonGutierrezVargas在修改之后,错误消息是相同的?是的,修改后的错误消息是相同的(SQLSTATE[HY093]:无效参数编号:未定义参数)问题是soluccionado非常感谢,没有看到materno look参数,是amaterno