php mysqli 受影响的行在删除语句后返回错误结果

标签 php mysql mysqli

我有一个函数可以从我的表中删除一行,如果该行之前存在,我想返回 true。我使用以下函数实现:

$mysqli = $this->mysqli;

$stmt = $mysqli->prepare("DELETE FROM active_clients WHERE token LIKE ?");
$stmt->bind_param('s', $token);
$stmt->execute();
if($stmt->affected_rows < 1){
    $stmt->close();
    return false;
}
$stmt->close();
return true;

它在我的本地主机上也能正常工作,但是当我移动到实时服务器时,它没有返回正确的结果。 affected_rows 始终返回 0,但该行已按原样删除。怎么会这样? php-version 会不会有问题?我在本地运行 5.4,在实时服务器 5.3 上运行...或者它也可能与数据库或服务器配置有关?

最佳答案

试试这个:

$mysqli = $this->mysqli;

$stmt = $this->mysqli->prepare("DELETE FROM active_clients WHERE token LIKE ?");
if(!$stmt){
    die('prepare() failed: ' . $mysqli->error);
}else{
    $stmt->bind_param('s', $token);

    if($stmt->execute()){
       $stmt->store_result();
        if($stmt->affected_rows < 0){
            $stmt->close();
            return false;
        }else{
            $stmt->close();
            return true;    
        }
    }else{
        die('execute() failed: ' . $mysqli->error);
    }


}

关于php mysqli 受影响的行在删除语句后返回错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25142231/

相关文章:

php - MySQL:无法更新现有的 NULL 值

php - 无法跨页面获取某些 session 变量

php - 将全局变量包含到 php 样式表中。

mysql - SQL循环遍历数据库表

php - 使用多个连接进行查询

php - Laravel - 在自定义验证中使用验证规则

mysql - sql '->>' 运算符出错

php - 使用 MySQL 和 PHP MySQLi 时如何正确打印斯堪的纳维亚字符 (åäö)?

php - SQL 语句 where 如果下一个值与当前值相同则跳过该值

php - 重置 MySqli 指针?