Netbeans一直给我发出“太多嵌套块”的烦人通知,并建议我引入一个新功能,但以下是非常糟糕的做法?
$sql = 'SELECT * FROM table';
$sth = $dbh->prepare($sql);
if ($sth->execute())
{
if ($sth->rowCount())
{
while ($row = $sth->fetch())
{
// Read the database here
}
}
else
{
// Handle no result case here
}
}
else
{
// Catch query failure here - Is this bit necessary if I'm confident the query is OK?
}
因此,每当我编写SQL查询时,似乎我已经在Netbeans推荐的嵌套块限制 - 我可以安全地使这个更加流畅吗?我知道这只是一个编码“提示”,但我想检查一下,我没有做任何非常愚蠢的事情:)
答案 0 :(得分:3)
嗯,这不是太糟糕,但是,根据您的偏好,您可以先处理错误'案例,避免嵌套if
语句,如下所示:
$sql = 'SELECT * FROM table';
$sth = $dbh->prepare($sql);
if (!$sth->execute) {
throw new Exception("Things went bad with the query!");
}
if (!$sth->rowCount()) {
// either throw an exception if you always expect to have results
// or handle the case in whatever way you need
}
while ($row = $sth->fetch()) {
do_something_nice($row);
}
如果有许多事情可能出错,或者有很多方法可以处理某个特定情况,那么这将是一种更好的方式,而不是让if() { if() { if() { if() { ... }}}}
混乱。