【问题标题】:Get failed query in prepared statements在准备好的语句中获取失败的查询
【发布时间】:2026-01-13 07:30:01
【问题描述】:

我有一个preparedstatement 插入查询。如果插入查询失败,我想实现一个电子邮件通知系统。如何识别失败的查询?

$stmt = $conn->prepare( "INSERT INTO user_persons ( NAME, DATE, ADDRESS, PINCODE ) VALUES ( ?, ?, ?, ? )" );
$stmt->bind_param( 'ssss', $name, $date, $address, $pincode );
$stmt->execute();
$stmt->close();

【问题讨论】:

  • mysqli 和 pdo 在失败时返回布尔值 false,默认情况下。所以$result = $stmt->execute(); if ($result === false ) { die("query failed"); }
  • if(!$stmt->execute()){ // 在这里编写你的 mail() 函数。}
  • 实际上你的陈述永远不应该失败。如果它取决于某些参数,请在执行语句之前验证它们,如果它们无效,请不要尝试执行语句。
  • @biesior;是的,我已经处理了几乎所有的场景。但我想确保使用这种方法的功能。

标签: php mysql prepared-statement typo3


【解决方案1】:

这样使用。

if(!$stmt->execute()){ 
   // write your mail() function here.
}

【讨论】:

  • 非常感谢。我会检查这个。