2012-02-12 65 views
3

我对PHP中的预处理语句有个疑问。我以前使用mysql_query函数来操作数据库数据,但被告知,对于安全问题,我应该考虑使用预准备语句。我已经完成了转换,但是我有几个关于如何检测查询是否失败的问题。在准备好的语句中检测错误

下面我有一段示例代码。 $ con变量是一个特定的连接,具体取决于我尝试的查询,在这种情况下,连接将通过仅具有选择权限的帐户连接到我的数据库。

$stmt = $con->stmt_init(); 
$stmt->prepare("SELECT COUNT(*) FROM users WHERE username=?"); 
$stmt->bind_param('s', $username); 
$stmt->execute(); 
$stmt->bind_result($user_count); 
$stmt->fetch(); 
$stmt->close(); 

我想知道如何在这些步骤中检测到故障?我可以想象的最简单的解决方案就是简单地使用try/catch来包装代码..但我想知道是否有更复杂的方法来做到这一点。

感谢您阅读我的问题。

+0

http://www.php.net/manual/en/pdo.error-handling.php – 2012-02-12 02:07:52

回答

1

要扩大Jared的评论,你可以做到以下几点:

$stmt->execute(); 
if(!$stmt->errorCode()){ 
    // do something with results 
}else{ 
    // do something with the error 
} 
$stmt->close(); 
+0

'empty'不起作用在函数调用。你想'!$ stmt-> errorCode()'? – deceze 2012-02-12 02:17:46

+0

@deceze Oopsies,是的。谢谢。 – Farray 2012-02-12 02:27:51