php - 当mysqli INSERT失败时,catch不报告错误。

标签 php mysqli error-handling exception-handling try-catch

我敢肯定这是一个基本错误,但是我几个小时后仍然感到困惑。我已经浏览了大约12个“捕获不起作用”,而且似乎都没有用。

我继承了这段代码。所有变量都有值(尽管有些是空字符串)。除了这里的基本问题之外,我还担心catch无法捕获错误(以前的语句试图将值存储在不存在的列中,甚至没有引发异常)。

我在顶部。 (我最初尝试将这两个语句一起使用,但出现了问题–不记得了。)

$mysqli = new mysqli("localhost", "", "", ""); // private stuff taken out
mysqli_report(MYSQLI_REPORT_STRICT);
mysqli_report(MYSQLI_REPORT_ERROR);

这是基本代码
$packageResult = $mysqli->query("INSERT INTO package (user_id,
package_name, weight, tracking_number, size_width, size_depth, size_height,
source, carrier, instructions, sent,ot48code) VALUES ({$_SESSION['id']},
'{$_POST['packageName']}', '{$_POST['weight']}', 
'{$_POST['tracking_number']}', '{$_POST['width']}', '{$_POST['depth']}', 
'{$_POST['height']}', '{$_POST['source']}', '{$_POST['carrier']}', 
'{$_POST['instructions']}',  NOW()),$ot48code");

我调试了一下,尽管$packageResult返回FALSE,但从未访问过catch代码。 (在PhpStorm中使用Xdebug。)
 catch (Exception $e)
   {
  echo "<pre>";
  echo "<br>";
  echo "ses testing at 171";
  @var_dump($_SESSION);
  echo "<br>";
  ...
  echo $e->getMessage();
catch对吗?

(PS,我知道这全都非常不安全,但这是针对Alpha的,我是一个打字员慢而又很糟糕的程序员(没有内存)。)

最佳答案

要捕获错误以及异常,您似乎需要

mysqli_report(MYSQLI_REPORT_ALL);

那一条线救了我。

我确实认为:
mysqli_report(MYSQLI_REPORT_ERROR);

会做的工作,但...

希望这对您遇到同样的问题有所帮助。

非常感谢@pec。

关于php - 当mysqli INSERT失败时,catch不报告错误。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53836027/

相关文章:

php - "Undefined variable"当php函数从mysql数据值中选择时

PHP MySQLi 准备好的语句不工作

PHP, mysqli 数组

php - 如果没有 $_POST 值,则无法让 SQLI 插入 null

javascript - 如何添加错误处理以检查输入是否为单独函数中的数字

php - 减少在 php 中解析大型 xml 文件的处理时间

php - 在 PHP 中处理白屏死机

php - Magento - 具有 1000 种颜色选项的可配置产品会减慢产品详细信息页面的加载时间

php - 为什么不显示wordpress fatal error ?

vba - VBA 错误消息框不一致?