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

时间:2018-12-18 15:15:05

标签: 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的,我是一个打字员慢而又很糟糕的程序员(没有内存)。)

1 个答案:

答案 0 :(得分:1)

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

mysqli_report(MYSQLI_REPORT_ALL);

那一行救了我。

我确实认为:

mysqli_report(MYSQLI_REPORT_ERROR);

愿意做,但是...

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

非常感谢@pec。