catch在mysqli INSERT失败时不报错。
Catch does not report an error when mysqli INSERT fails.
我确定这是一个基本错误,但几个小时后我仍然感到困惑。我浏览了大约一打 "catch not working" 并且 none 似乎很有用。
我继承了这段代码。所有变量都有值(尽管有些是空字符串)。不仅仅是这里的基本问题,我担心我的 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 的,我是一个慢打字员和非常糟糕的程序员(没有记忆)。)
要捕获 ERRORS 以及您似乎需要的异常
mysqli_report(MYSQLI_REPORT_ALL);
那一行字救了我。
我认为:
mysqli_report(MYSQLI_REPORT_ERROR);
会做这份工作,但是...
如果您遇到同样的问题,希望这对您有所帮助。
非常感谢@pec。
我确定这是一个基本错误,但几个小时后我仍然感到困惑。我浏览了大约一打 "catch not working" 并且 none 似乎很有用。
我继承了这段代码。所有变量都有值(尽管有些是空字符串)。不仅仅是这里的基本问题,我担心我的 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 的,我是一个慢打字员和非常糟糕的程序员(没有记忆)。)
要捕获 ERRORS 以及您似乎需要的异常
mysqli_report(MYSQLI_REPORT_ALL);
那一行字救了我。
我认为:
mysqli_report(MYSQLI_REPORT_ERROR);
会做这份工作,但是...
如果您遇到同样的问题,希望这对您有所帮助。
非常感谢@pec。