Php 实现mysqli连接的最佳实践/最实用的方法
我正在努力简化我们的db助手和实用程序,我看到我们的每个函数,例如Php 实现mysqli连接的最佳实践/最实用的方法,php,mysql,mysqli,database-connection,Php,Mysql,Mysqli,Database Connection,我正在努力简化我们的db助手和实用程序,我看到我们的每个函数,例如findAllUsers(){…}或findCustomerById($id){…}都有自己的连接详细信息,例如: 函数findAllUsers(){ $srv='xx.xx.xx.xx'; $usr='username'; $pwd=‘密码’; $db=‘数据库’; $port=3306; $con=newmysqli($srv、$usr、$pwd、$db、$port); 如果($con->connect\u错误){ die(“
findAllUsers(){…}
或findCustomerById($id){…}
都有自己的连接详细信息,例如:
函数findAllUsers(){
$srv='xx.xx.xx.xx';
$usr='username';
$pwd=‘密码’;
$db=‘数据库’;
$port=3306;
$con=newmysqli($srv、$usr、$pwd、$db、$port);
如果($con->connect\u错误){
die(“连接到数据库失败:“..con->connect_错误”);
}否则{
sql=“从客户中选择*”
.....
.....
}
}
对于每个助手/函数,依此类推。因此,我考虑使用一个返回连接对象的函数,例如:
函数dbConnection($env=null){
$srv='xx.xx.xx.xx';
$usr='username';
$pwd=‘密码’;
$db=‘数据库’;
$port=3306;
$con=newmysqli($srv、$usr、$pwd、$db、$port);
如果($con->connect\u错误){
返回false;
}否则{
返回$con;
}
}
那我就可以做了
function findAllUsers() {
$con = dbConnection();
if ($con === false) {
echo "db connection error";
} else {
$sql = "SELECT ....
...
}
与类系统(如
$con=new dbConnection()
)相比,使用这样的函数有什么优势吗?您应该只打开一次连接。一旦您意识到只需打开连接一次,您的函数dbConnection
就没有用了。可以在脚本开始时实例化mysqli类,然后将其作为参数传递给所有函数/类
连接始终是相同的三条线:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$con = new mysqli($srv, $usr, $pwd, $db, $port);
$con->set_charset('utf8mb4');
然后,只需将其作为参数传递,并且不再使用if
语句执行任何检查
function findAllUsers(\mysqli $con) {
$sql = "SELECT ....";
$stmt = $con->prepare($sql);
/* ... */
}
看起来你的代码就像意大利面条一样。因此,我强烈建议重写它,并在PSR-4中使用OOP 这两件事都糟得让人无法接受。嘿,常识,情况怎么样?我知道头顶上的课的气味会很快吸引我。但是,使用函数也有那么糟糕吗?