以下代码片段位于我的php文件中,该文件表示为REST接口。
(...)
if ($stmt = $connection->prepare("INSERT INTO Resource VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)")){
$stmt->bind_param("sssssssii", $email, $timestamp, $title, $desc, $lat, $lng, $alt, $full, $cat);
// 1)
if($stmt->execute()){
// insertion of Resource successful
// 2)
}else{
// insertion of Resource failed
echo "INSERTION_RESOURCE_FAILED";
$stmt->close();
die;
}
(...)
先前版本已正确执行,没有另外两个整数字段作为参数。我通过在那里放置回声来“调试”php文件。在位置1)我收到回声,在位置2)没有。这对我来说意味着stmt-> execute()失败了。但如果失败了,为什么我也没有收到else块的回声呢?我怎样才能更好地调试这些问题?请注意,我检查了POST值,它们是正确的。
我也宣布了
error_reporting(E_ALL);
在<?php
之后,
每组查询后
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
。尽管如此,没有错误得到回应。可能是什么问题呢? 〜
更新
就像Linus提到的那样,它是失踪的display_errors()
。所以最后我发现这是一个外键的问题。但是由于你的回答,我终于可以调试一些了一些请进入!
答案 0 :(得分:1)
好的,错误实际上是缺少的display_errors()
。只有在声明它之后,脚本才会返回错误的stackstrace。就我而言,这是一个与SQL相关的问题。
以下是剧本的开头:
<?php
ini_set("display_errors", 1);
ini_set("track_errors", 1);
ini_set("html_errors", 1);
error_reporting(E_ALL);
// (...)