PHP mySQLi:if"&&&引用;协议和mySQLi语句错误检查
我正在使用mysqli实现一些基本的getter函数,并且正在考虑一种在错误检查方面懒惰的方法,但仍然是正确的 所以我写了这种类型的代码段PHP mySQLi:if"&&&引用;协议和mySQLi语句错误检查,php,mysql,mysqli,Php,Mysql,Mysqli,我正在使用mysqli实现一些基本的getter函数,并且正在考虑一种在错误检查方面懒惰的方法,但仍然是正确的 所以我写了这种类型的代码段 if(!mysqli_stmt_bind_param($stmt, "s", $username) && !mysqli_stmt_execute($stmt) && !mysqli_stmt_store_result($stmt) && !mysqli_stmt_bind_result($stmt, $res
if(!mysqli_stmt_bind_param($stmt, "s", $username) && !mysqli_stmt_execute($stmt) && !mysqli_stmt_store_result($stmt) && !mysqli_stmt_bind_result($stmt, $result) && !mysqli_stmt_fetch($stmt))
{
//Error Protocol
}
我已经读到,PHP在检查其and时很懒惰,只检查到第一次失败。因为mysqli_stmt_error还返回最近的错误,所以我认为这种类型的结构可以很好地工作。但是,我不确定是否有什么我没有想到的东西会破坏这种类型结构。Woops,我把它倒过来了,“!”和“&&”的组合意味着第一个成功的mysqli_stmt方法会因为“!”而结束if语句。因此,我将“&&”改为“| |”,这样,第一个false语句将被翻转为true并触发if语句
if(!mysqli_stmt_bind_param($stmt, "s", $username)
|| !mysqli_stmt_execute($stmt)
|| !mysqli_stmt_store_result($stmt)
|| !mysqli_stmt_bind_result($stmt, $result)
|| !mysqli_stmt_fetch($stmt))
{
//Error Protocol
}
//Success Protocol
如果我想用“&&”来实现它,我必须去掉“!”
它会起作用,但要考虑清楚易读性。当其他人接管这些东西的维护时,任何在屏幕外有2/3语句的代码都可能会为您赢得一些恶名。
if(mysqli_stmt_bind_param($stmt, "s", $username)
&& mysqli_stmt_execute($stmt)
&& mysqli_stmt_store_result($stmt)
&& mysqli_stmt_bind_result($stmt, $result)
&& mysqli_stmt_fetch($stmt))
{
//Success Protocol
}
//Error Protocol