duangou2028 2014-07-02 23:33
浏览 59
已采纳

使用事务的PHP PDO插入不显示错误

I have this code:

$Pdo = new PDO('pgsql:host=localhost;port=5432;dbname=mydb', 'user', 'password');

$options = = array(
    PDO::ATTR_ERRMODE          => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_CURSOR           => PDO::CURSOR_FWDONLY,
    PDO::ATTR_EMULATE_PREPARES => false
);

$sql = 'INSERT INTO my_table (
            field_a,
            field_b
        ) VALUES (
            :field_a,
            :field_b
        )';

$Pdo->beginTransaction();

$Ps = $Pdo->prepare($sql, $options);

$Ps->execute(array(
    ':field_a' => 'Field A',
    ':field_b' => 'Field B',
    ':field_c' => 'Field C'
));

$Pdo->commit();

$Ps-execute() returns false, but doesn't show an error message telling that there are more columns than in the SQL specified.

In my real case i have more than one SQL statement, because of this i am using a transaction.

Someone knows how to solve this?

  • 写回答

1条回答 默认 最新

  • dongzhaoshi8497 2014-07-03 02:55
    关注

    For now, the only solution i found is:

    $Pdo->beginTransaction();
    
    $Ps = $Pdo->prepare($sql, $options);
    
    if( ! $Ps->execute(array(
        ':field_a' => 'Field A',
        ':field_b' => 'Field B',
        ':field_c' => 'Field C'
    ))){
        throw new Exception('Transaction failed: ' . implode(' | ', $Ps->errorInfo()));
    }
    
    $Pdo->commit();
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?