Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 实现mysqli连接的最佳实践/最实用的方法_Php_Mysql_Mysqli_Database Connection - Fatal编程技术网

Php 实现mysqli连接的最佳实践/最实用的方法

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(“

我正在努力简化我们的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(“连接到数据库失败:“..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

这两件事都糟得让人无法接受。嘿,常识,情况怎么样?我知道头顶上的课的气味会很快吸引我。但是,使用函数也有那么糟糕吗?