rowCount(),为什么它不能用于创建用户?任何选择?

时间:2014-11-26 00:24:53

标签: php mysql createuser

在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;

我正在寻找某种方式,以同样的方式检查前一种情况。

2 个答案:

答案 0 :(得分:1)

感谢您提供额外的代码

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

if !($query->execute() {
    echo "Ouch, there was an error.";
}

答案 1 :(得分:1)

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

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

更新和删除时,您可以rowCount() 0execute() true。这意味着查询成功但没有行与提供的约束匹配(通常为WHERE)。

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