我一直试图用两个不同的查询来做这个,但只有第一个有效。 PDO对我来说是新的,这就是为什么我有点混淆。
<?php
include 'database.php';
$nombres=$_POST['tnombres'];
$apellidos=$_POST['tapellidos'];
$carrera=$_POST['tcarrera'];
$con->beginTransaction();
try{
// insert query
$query = "INSERT INTO alumno (nombres,apellidos) VALUES (:nombres,:apellidos)"`;`
// prepare query for execution
$stmt = $con->prepare($query);
// bind the parameters
$stmt->bindValue(':nombres',$nombres,PDO::PARAM_STR);
$stmt->bindValue(':apellidos',$apellidos,PDO::PARAM_STR );
$stmt->execute();
$ultimo=$con->lastInsertId();
$query = "INSERT INTO ficha (fechaingreso,carrera,alumno_id) VALUES (:fechaingreso,:carrera,:alumno_id)";
$stmt = $con->prepare($query);
$fecha= date('d-m-Y');
$stmt->bindValue(':fechaingreso',$fecha);
$stmt->bindValue(':carrera',$carrera);
$stmt->bindValue(':alumnoid',$ultimo);
$stmt->execute();
$con->commit();
echo 'Datos insertados';
echo '<p><a href=index.php>Inicio</a></p>';
echo "<p>Numero de ultimo registro insertado: ",$ultimo;
}
// show error
catch(PDOException $e){
$con->rollback();
echo $e->getMessage();
}
就像我之前说的那样,在第一个查询工作完美之前,即使从最后插入的记录中捕获id也可以正常工作,但第二个查询不会做它必须做的事情。 我有这条错误消息
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\wamp\www\escuela\crear.php on line 32
答案 0 :(得分:1)
您的脚本中有拼写错误。在您使用INSERT
的{{1}}中,但稍后您尝试通过alumno_id
绑定该值。
alumnoid
缺少下划线 - $query = "INSERT INTO ficha (fechaingreso,carrera,alumno_id) VALUES (:fechaingreso,:carrera,:alumno_id)";
与alumnoid
不同。
alumno_id
正如@FirstOne已经提到的那样:解决方案是在两个变量之一中添加或删除$stmt->bindValue(':alumnoid',$ultimo);
下划线。