Php mysqli更新在mysqli_stmt_受影响的_行中返回1,但在DB中返回任何更改

Php mysqli更新在mysqli_stmt_受影响的_行中返回1,但在DB中返回任何更改,php,mysql,mysqli,Php,Mysql,Mysqli,我的代码在mysqli\u stmt\u受影响的行($stmt)中返回1: 但我看不到我的MySQL数据库有任何变化!是正确的吗?毫无疑问,我甚至用SELECT在相同的应用程序中检查了它。问题在哪里 谢谢大家! 我认为问题相当明显。您正在将110传递给日期字段,这将不起作用。日期字段通常传递日期或日期和时间的字符串表示形式 然而,这确实突出了一个事实,即您没有正确地检查查询结果,只是假设它们总是有效的 此外,坚持一种或另一种范式,即mysqlioo或procedural,但不要在两者之间切换,这

我的代码在mysqli\u stmt\u受影响的行($stmt)中返回1:

但我看不到我的MySQL数据库有任何变化!是正确的吗?毫无疑问,我甚至用SELECT在相同的应用程序中检查了它。问题在哪里


谢谢大家!

我认为问题相当明显。您正在将110传递给日期字段,这将不起作用。日期字段通常传递日期或日期和时间的字符串表示形式

然而,这确实突出了一个事实,即您没有正确地检查查询结果,只是假设它们总是有效的

此外,坚持一种或另一种范式,即mysqlioo或procedural,但不要在两者之间切换,这也是一个好主意

因此,我建议您开始在所有数据库访问代码上使用此方法

$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));

@Fred ii-:不,受影响的行使用语句句柄…
int$mysqli\u stmt->受影响的行
int mysqli\u stmt\u受影响的行(mysqli\u stmt$stmt)
。无法使用连接句柄,因为可能有多个未完成的查询会影响_行句柄。如果您对行sendResponse(200,json_encode(mysqli_stmt_impacted_rows($stmt))进行注释;你的更新有效吗?如果没有,我想你是在尝试将日期更新为整数,这可能就是问题所在,只是一些想法
$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));