嗨,我遇到了一个问题,我有一个记录,其中有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>
最后一个插入错误,缺少两个命名的占位符,: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));
您正在混合参数::celular
应该是:telefono
。在$insertar1
查询中,:materno
应该是:amaterno
。
看起来您需要通过向:apaterno
添加:
来修复"apaterno"=>$paterno,
Like so:(Re:传递给PDOStatement::bindParam()的参数名称的前导冒号是可选的吗?)":apaterno"=>$paterno,
完整代码变为:
$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
));