0

在mysql中创建新用户为:

$query = $dbconnection->prepare("CREATE USER 'john'@'localhost' IDENTIFIED BY 'mypass'");
$query->execute();
$counts = $query->rowCount();
return $counts;

通常在其他查询中,我使用 rowCount() 来检查查询是否成功。如果 rowCount() >1,则查询成功。但我意识到这在创建用户时不起作用。
在这种情况下,创建了用户,但 rowCount() 的结果仍然为 0。有什么方法可以检查此查询是否成功。

@GHOST 注释中的更新:此查询返回值 1,以确认数据已插入,或者行受到影响。

     $query = $this->link->prepare("INSERT INTO agent(uname,password,) VALUES(?,?");    
    $values = array($uname,$pw);
    $query->execute($values);
    $counts=$query->rowCount();
    return $counts;

我正在寻找某种方式,以同样的方式检查前一个案例。

4

2 回答 2

1

感谢您提供额外的代码

$query->execute();这将在成功查询时返回 True,如果在执行查询时出现错误则返回 False

if !($query->execute() {
    echo "Ouch, there was an error.";
}
于 2014-11-26T00:36:50.590 回答
1

Colin 的回答对于标准 PDO 错误模式是正确的。

这更像是一个长评论而不是答案,但重要的是要注意返回值的差异,rowCount()尤其execute()是更新和删除的差异。

当你更新和删除时,你可以有一个rowCount()of0但一个execute()of true。这意味着查询成功但没有行匹配提供的约束(通常WHERE)。

因此,在执行更新和删除时,您应该检查两个返回值。一个确保查询成功,另一个检查行是否受到影响。检查两者将使调试更容易,并防止rowCount()查询失败时出现致命错误。

于 2014-11-26T01:04:23.927 回答