if($stmt = $this->Sys->db->prepare("INSERT INTO dj_videos (title, url, caption) VALUES (?, ?, ?)")) {
$stmt->bind_param('sss', $title, $url, $comment);
$stmt->execute();
$stmt->store_result();
$stmt->fetch();
if($stmt->num_rows == 1) {
return TRUE;
}
else {
return FALSE;
}
返回false,但每次都会将信息插入数据库。它让我大吃一惊。
答案 0 :(得分:0)
num_rows
返回语句结果集中的行数。
您想要affected_rows
,它返回上次执行的语句更改,删除或插入的行数
$stmt->bind_param('sss', $title, $url, $comment);
$stmt->execute();
$stmt->store_result();
$stmt->fetch();
if($stmt->affected_rows == 1) {
return TRUE;
}
else {
return FALSE;
}
答案 1 :(得分:0)
mysqli_stmt::execute成功时返回TRUE,失败时返回FALSE。 所以你只需要返回它的结果:
if($stmt = $this->Sys->db->prepare("INSERT INTO dj_videos (title, url, caption) VALUES (?, ?, ?)")) {
$stmt->bind_param('sss', $title, $url, $comment);
return $stmt->execute();
}
顺便说一下,如果语句是UPDATE
,DELETE
或INSERT
,则可以使用mysqli_stmt_affected_rows()
函数确定受影响行的总数。