我有一个简单的查询(AJAX)。我注意到如果$insert_stmt
没有执行,我仍然会收到成功消息。
if ($insert_stmt = $mysqli->prepare("INSERT INTO `alerte` (`nom_alerte`, `country`, `date_debut_alerte`) VALUES (?, ?, ?)")) {
$insert_stmt->bind_param('sss', $alert_name, $country, $start_alert_date);
$insert_stmt->execute();
$reponse = 'success';
} else {
$reponse = 'Sorry, a database error occurred; please try later';
}
echo json_encode(["reponse" => $reponse]);
我想知道是否有一种方法可以添加另一个if / else语句来验证执行
我尝试了类似的东西,但我不确定它是不是很好的编码:
if ($insert_stmt = $mysqli->prepare("INSERT INTO `alerte` (`nom_alerte`, `country`, `date_debut_alerte`) VALUES (?, ?, ?, ?)")) {
$insert_stmt->bind_param('sss', $alert_name, $country, $start_alert_date);
// inserted part if/else check
if (! $insert_stmt->execute()) {
$reponse = 'Sorry, a database error occurred; please try later';
} else {
$reponse = 'success';
}
} else {
$reponse = 'Sorry, a database error occurred; please try later';
}
有人能告诉我它是否合适或是否有更好的方法?
答案 0 :(得分:0)
请像这样逐步调试代码。
如果你有,肯定会给你的错误。
if ($stmt = $mysqli->prepare("INSERT INTO `alerte` (`nom_alerte`, `country`, `date_debut_alerte`) VALUES (?, ?, ?, ?)")) {
echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
if (!$stmt->bind_param('sss', $alert_name, $country, $start_alert_date)){
echo "Binding parameters failed: (" . $stmt->errno . ") " . $stmt->error;
}
if (!$stmt->execute()) {
echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
}else {
$reponse = 'success';
}
一旦你犯错了。您可以稍后相应地更改您的代码。
我希望这会帮助你轻松找到你的错误!
答案 1 :(得分:-1)
我不确定alerte
- 表中列的类型,但我认为错误是每个插入值的遗忘引号...
试试这个:
INSERT INTO `alerte` (`nom_alerte`, `country`, `date_debut_alerte`) VALUES ('?', '?', '?')