gpt4 book ai didi

php - 为什么 execute() 在出错时不返回 true?

转载 作者:行者123 更新时间:2023-11-29 01:27:05 25 4
gpt4 key购买 nike

请看我的代码:

try {
// db connection here
$stm = $dbh->prepare("INSERT INTO mytable(id,token) values(NULL,$token)")->execute();

} catch(PDOException $e){
if ( $stm ){
echo 'inserting fails';
} else {
echo 'something else is wrong';
}
}

-- `token` column is unique

当前输出:

  • 行插入成功。
  • 它为 {duplicate entry} 和 {SQL syntax} 打印 something else is wrong 错误

预期产出:

  • 行插入成功。
  • 它为{duplicate entry}打印inserting fails错误
  • 它打印something else is wrong error for {SQL syntax}

好的,如果我像下面那样编写代码(没有链接),那么会出现预期的输出:

$stm = $dbh->prepare("INSERT INTO mytable(id,token) values(NULL,$token)");
$stm->execute();

我想知道,我什么时候可以链接那些 PDO 语句?

最佳答案

异常只能在prepareexecute 方法中抛出。其中任何一个都将在 $stm = 之前发生。换句话说,如果将要抛出异常,$stm 的赋值总是将被跳过,这意味着变量不会' 根本不存在于您的 catch block 中。因此它只能评估为 false,并且实际上会产生关于未定义的通知。

关于php - 为什么 execute() 在出错时不返回 true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38270015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com