1
以下代码片段位于我的php文件中,它被视为REST界面。PHP:stmt-> execute()失败,但错误为空
(...)
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);
每组查询后。尽管如此,没有错误被回应。可能是什么问题呢? 〜
UPDATE
像莱纳斯提到,它是缺失的display_errors()
。所以最后我发现这是一个外键问题。但是,由于你的回答,我终于可以调试php一些请求!
'error_reporting'还不是全部。那么'display_errors'呢?它也需要设置。 –
确保每个列的类型都是正确的,表单元素(如果有)不包含拼写错误并且名称正确。 POST变量(如果有的话)区分大小写。确保所有列都存在,并且您正在选择正确的表格。它可能是一些数字和可能的事物/因素的组合。然而,每当我看到'$ desc'时就会畏缩,这告诉我你可能正在使用一个MySQL保留字['DESC'](http://dev.mysql.com/doc/refman/5.5/en/reserved- words.html)。要显示错误,除了你目前使用的内容外,还要使用'ini_set('display_errors',1);'。 –
另外,最好选择要插入的实际列。你现在正在做的就像晚上打一堆高尔夫球,希望他们能够进入正确的洞。 –