PHP mySQLi:if"&&&引用;协议和mySQLi语句错误检查

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

我正在使用mysqli实现一些基本的getter函数,并且正在考虑一种在错误检查方面懒惰的方法,但仍然是正确的

所以我写了这种类型的代码段

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