我正在编写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脚本的最顶层测试数据库连接
答案 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
}
但是如果您想为每个变量进行错误处理时需要不同的错误消息,那么您所做的就是一个很好的做法。