0

データベースにデータを挿入する php フォームを作成しました。データベース名は Emp、テーブル名は info です。PDOを使用して挿入しています。これを行うコードを作成しましたが、エラーをキャッチすることなく実行されていますが、データベースはまだ空です。以下にコードを投稿しました。何が間違っているのか教えてください。

<?php
    try{
        echo $_POST['name'].", ".$_POST['age'].", ".$_POST['email'].", ".$_POST['name'].", ".$_POST['country'].", ". $_POST['city'] ;
        $user="root";
        $pass="root123";
                    $con=new PDO('mysql:host=localhost;dbname=Emp', $user, $pass);
        $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $con->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
        $con->beginTransaction();
        //echo "INSERT INTO info(Empid,Ename,Age,Email,Country,City,Salary) VALUES('".$_POST['eid']."','".$_POST['name']."','".$_POST['age']."','".$_POST['email']."','".$_POST['country']."','".$_POST['city']."','".$_POST['salary']."')";
        $num=$con->exec("INSERT INTO info(Empid,Ename,Age,Email,Country,City,Salary) VALUES('".$_POST['eid']."','".$_POST['name']."','".$_POST['age']."','".$_POST['email']."','".$_POST['country']."','".$_POST['city']."','".$_POST['salary']."')");
        echo "<br>".$num." row added succesfully"; // this is displayed when I execute this but database is empty.
    }
    catch(Exception $e)
    {
        echo 'Exception -> ';
        var_dump($e->getMessage());
    }
    ?> 
4

3 に答える 3

2

を使用beginTransaction()しているためcommit、変更する必要があります。追加

$con->commit();

参考:PHPマニュアル

注: PDO を使用しているにもかかわらず、サニタイズせずに HTTP リクエスト値を補間しているため、問題がある可能性があります。

于 2013-09-11T05:33:21.987 に答える
1

トランザクションをコミットまたはロールバックする必要があります..

PDO::commit()PDO トランザクションを介してデータベースに加えられた変更は、呼び出しまたは呼び出しによってトランザクションを終了するまでコミットされません。Calling PDO::rollBack()

<?php
try{
    echo $_POST['name'].", ".$_POST['age'].", ".$_POST['email'].", ".$_POST['name'].", ".$_POST['country'].", ". $_POST['city'] ;
   ...
  $con->beginTransaction();
  ....
   $con->commit();
}
catch(Exception $e)
{
    echo 'Exception -> ';
    var_dump($e->getMessage());
     $con->rollBack();
}
?> 
于 2013-09-11T05:33:30.960 に答える
1

あなたがする必要があるのは、commitおよび/またはrollBackあなたのコードです

<?php
    try{
        .
        . code
        .
        $con->beginTransaction();
        .
        . code
        .
        $num=$con->exec("INSERT INTO info (Empid,Ename,Age,Email,Country,City,Salary) VALUES('".$_POST['eid']."','".$_POST['name']."','".$_POST['age']."','".$_POST['email']."','".$_POST['country']."','".$_POST['city']."','".$_POST['salary']."')");
        $con->commit(); // This is missing
    }
    catch(Exception $e)
    {
        var_dump($e->getMessage());
        $con->rollBack(); //  And this is missing
    }
?> 
于 2013-09-11T05:38:32.110 に答える