>你有世界上所有的时间,因为他们永远不会停止自己的工作!
是的,有几种方法可以做到这一点。
>是的,但没有一个适合所有的解决方案。每种情况都是不同的,适合你的情况在每种情况下可能都不合适。
首先,旧的ext / mysql从PHP 5.5.0开始已被弃用,但是由于扩展本身最终将被移动到PHP PECL repository(当它被删除时),它将永远不会停止工作。但是,我们还没有,只有当您选择升级到该版本的PHP时,才能受到影响。没有确定删除延期的确切时间。
其次,您可以使用变量来存储数据库连接,就像旧的ext / mysql扩展在幕后为您做的。诀窍是你没有意识到它正在做什么(它使用您在调用mysql_connect时创建的最后一个打开的连接,并在每次调用类似mysql_query的位置访问数据库时使用它)。
您可以使用过程样式在函数中使用静态变量来执行此操作。
function openDBConn() {
static $link;
if (!isset($link)) {
$link = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');
}
return $link; // returns the link
}
或者你可以使用类静态变量使用OOP …
Class MyDBConnect {
public static $link;
public function openDBConn() {
if (!isset(static::$link)) {
static::$link = new mysqli('localhost', 'my_user', 'my_password', 'my_db');
}
}
}
我想鼓励你使用更新的API,我赞扬你,但我也想在你向前走时警告你。当您开始将您的功能从旧的ext / mysql功能迁移到新的mysqli扩展时,请注意不要也重新插入旧扩展的不良实践(例如使用旧的SQL字符串连接和转义技术ext /提供mysql)。而是利用MySQLi prepared statements and parameterized queries。
我想要引导您注意的是使用较新的API与MySQL数据库(即PDO and MySQLi)进行接口的好处。