我的代码在mysqli_stmt_affected_rows($ stmt)中返回1:
$stmt = $this->db->prepare('UPDATE milestone SET date = ? WHERE id = ?');
$a = 1;
$b = 110;
$stmt->bind_param("ii", $b, $a);
$stmt->execute();
sendResponse(200, json_encode(mysqli_stmt_affected_rows($stmt)));
$stmt->close();
但我看不到MySQL数据库的任何变化!这是正确的没有关于它,我甚至用SELECT选择了同一个Aplication。问题在哪里?
谢谢!
答案 0 :(得分:1)
我认为问题相当明显。您将110传递到日期字段,这将无法正常工作。日期字段通常传递日期或日期和时间的字符串表示。
然而,这确实突出了这样一个事实,即您没有正确检查查询结果,只是假设它们始终有效。
同样坚持一个或其他范例,即mysqli OO或Proceedural,但不要在两者之间切换。
所以我建议你开始在所有数据库访问代码上使用这个方法。
$stmt = $this->db->prepare('UPDATE milestone SET date = ? WHERE id = ?');
if ( ! $stmt ) {
echo $this->db->error;
exit;
}
$a = 1;
// pass a string representation of a date
$b = '2015-09-12';
// change the date parameter's data type to string
$stmt->bind_param("si", $b, $a);
$status = $stmt->execute();
if ( ! $status ) {
echo $stmt->error;
exit;
}
sendResponse(200, json_encode($stmt->affected_rows));