正在检查每个db查询失败被认为是一个很好的PHP编码习惯?

时间:2016-10-08 04:25:01

标签: php mysql

我正在编写PHP大约4个月。我从未见过大的PHP脚本,我不知道它们是怎么样的。我想知道“我真的需要为每一个查询做这个吗?”

 $result= $mysqli->query("select * from clients;");
 if(!result){
    //error.  log it and echo a proper message
 }else{
    //show the clients
 }

我是否需要为我在最终生产代码中执行的每个查询执行此操作?因为我的PHP脚本现在已经满了if(!$result) if(!$result) if(!$result) if(!$result) if(!$result)。这不会消耗更多的时间进行解析,这意味着更多的响应延迟

注意:在我继续之前,我在php脚本的最顶层测试数据库连接

3 个答案:

答案 0 :(得分:3)

是的,你应该检查错误。首先,它有助于调试,因为您应该按照请求尽可能少地运行查询,它不会在加载速度上产生任何明显的差异。所以没有理由,为什么你不应该这样做。

那么为什么不创建自己的数据库类呢?你只需要写一次。

class Database
{
    /* ... */
    private $connection = null;

    public function __construct($host, $user, $password, $database)
    {
        // connect
    }


    public function query($query)
    {
        $result = $this->mysqli->query($query);
        if(!result)
        {
            // error
        }
        else
        {
            return $result;
        }
    }

    public function __destruct()
    {
        // deconnect
    }
}

这样称呼:

$db = new Database($host, $user, $password, $database);
$result = $db->query("select * from clients;");

答案 1 :(得分:3)

是。做吧。每次数据库交互。

如果你担心检查每次数据库交互的回报的开销......我会担心号码您正在运行的数据库交互。与运行不必要的查询或低效查询的开销相比,甚至是可以使用单个查询执行的非常有效的查询循环....检查FALSE不会移动指针。

如果您想担心代码路径的长度,请看一下"正在进行的内容""在mysqli或PDO中。或者看看其中一个ORM框架。那个检查FALSE甚至不会刺破仪表上的指针。

绝对要注意简化错误记录,因此您的代码不会因处理错误而变得杂乱无章。通过精简,我意味着

   ... or die(mysqli_error($con));

答案 2 :(得分:1)

你也可以这样做:

$select = $mysqli->query('SELECT * FROM users');
$delete = $mysqli->query('DELETE FROM customers');
$update = $mysqli->query('UPDATE table SET id={$id}');

if(!$select || !$delete || !$update) {
    // error messages
} else {
    // executions for each variable
}

但是如果您想为每个变量进行错误处理时需要不同的错误消息,那么您所做的就是一个很好的做法。