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();
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥15 python爬取bilibili校园招聘网站
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件