簡體   English   中英

用pdo在兩個mysql表中插入一條記錄

[英]Insert a record in two mysql tables with pdo

我一直在嘗試使用兩個不同的查詢來執行此操作,但是只有第一個有效。 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

您的腳本中有錯字。 在您的INSERT您使用alumno_id但是稍后您嘗試通過alumnoid綁定值。

$query = "INSERT INTO ficha (fechaingreso,carrera,alumno_id) VALUES (:fechaingreso,:carrera,:alumno_id)";

缺少下划線- alumnoidalumno_id

$stmt->bindValue(':alumnoid',$ultimo);

正如@FirstOne早已提到的那樣:解決方案是在兩個變量之一中添加或刪除_下划線。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM