在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;
我正在寻找某种方式,以同样的方式检查前一种情况。
答案 0 :(得分:1)
感谢您提供额外的代码
$query->execute();
这将在成功查询时返回True,如果执行查询时出错则返回False
if !($query->execute() {
echo "Ouch, there was an error.";
}
答案 1 :(得分:1)
Colin的答案对于标准的PDO错误模式是正确的。
这是一个很长的评论而不是答案,但重要的是要记下rowCount()
和execute()
的返回值的差异,尤其是更新和删除。
更新和删除时,您可以rowCount()
0
但execute()
true
。这意味着查询成功但没有行与提供的约束匹配(通常为WHERE
)。
因此,在执行更新和删除时,您应该检查两个返回值。一个用于确保查询成功,另一个用于检查行是否受到影响。检查两者将使调试更容易,并在查询失败时防止rowCount()
上的致命错误。