php - 使用准备好的语句更新记录,检查更新是否有效

标签 php mysql mysqli prepared-statement

我有一个更新数据库记录的查询,它工作正常,但我想知道如何检查更新是否已经发生,以便我可以返回 true 并显示正确的消息?

现在我知道我可以使用 SELECT 查询:

if(stmt->fetch())

如果这是真的,我返回 true 并说“找到记录”,但我不知道如何为更新查询做这件事?

有人知道怎么做吗?

$query = "UPDATE user
            SET password = ?
            WHERE email = ?";

if($stmt = $conn->prepare($query)) 
{
    $stmt->bind_param('ss', $pwd, $userEmail);
    $stmt->execute();

    //Check if update worked
}

感谢您的帮助。

最佳答案

Execute 方法在成功完成时返回 True,但是,如果此行为对您来说还不够,您还可以检查 affected rows :

$query = "UPDATE user
            SET password = ?
            WHERE email = ?";

if($stmt = $conn->prepare($query)) 
{
    $stmt->bind_param('ss', $pwd, $userEmail);
    if ($stmt->execute()) {
        //query with out errors:
        printf("rows updateds: %d\n", $stmt->affected_rows);
    } else {
        //some error:
        printf("Error: %s.\n", $stmt->error);
    }
}

您可以做的第二项检查是验证是否恰好更新了 1 行:

if($stmt = $conn->prepare($query)) 
{
    $stmt->bind_param('ss', $pwd, $userEmail);
    if ($stmt->execute() and $stmt->affected_rows == 1) {
        //your update is succesfully.
    }
}

关于php - 使用准备好的语句更新记录,检查更新是否有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8927486/

相关文章:

具有多个自连接的键值查询的 mysql 替代方案

php - 通过单个查询将参数用法绑定(bind)到多个值

java - PHP 中的 Vector-Java 等价物?

php - 在 .htaccess 文件中设置 open_basedir 会完全限制 PHP 脚本目录访问吗?

mysql - SQL语句操作优先级

mysql - 更快地实现代码 mySQL 子查询的方法

php - 外键可以引用具有复合(即两列的组合)键的表吗?

php - 更新 WordPress 以使用 mysqli 而不是 mysql

php - 通过 Google/Gmail 而不是从我的服务器发送电子邮件的优缺点

php - 在linux中使用php创建txt文件