SQLSTATE[HY093]:参数号PHP-PDO+无效;MYSQL-form
您好,我有一个问题,我有一个记录,其中有4个表,每个表都与使用lastInsertId获取生成的最后一个插入id有关,但我还是遇到了这个小问题 这是我的代码类: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{
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