跨多个文件连接到mysql数据库的最有效方法(PHP)

40P*_*lot 7 php mysql

有很多方法可以实现相同的结果,我想知道哪种方法是初始化mysql连接的最有效方法.

注意:最近我还在PHP文档中发现mysql_connect现在是DISCOURAGED,我的所有代码当前都使用mysql_connect.是否有足够的理由转换?

我想要做的是:

  1. 创建一个database.php.
  2. 将要连接到数据库的PHP页面将包含此文件,因此我不必编写大量代码来连接到数据库.

那么这个database.php应该做什么,以便最有效率.

1. $con = mysql_connect("etc"...)
   mysql_select_db("databse")
Run Code Online (Sandbox Code Playgroud)

//从这里我可以包含这个文件并开始进行查询. - 工作,但我不确定它是否是最好的方式.

2. //database.php
   $mysqli = new mysqli('localhost', 'user', 'pwd', 'database');
   // in other files
   $mysqli->query("SELECT ...")
Run Code Online (Sandbox Code Playgroud)
  1. 或者我应该使用持久连接?(该网站数据库非常庞大,并且会有很多页面生成,同时登录的用户不超过100个)

先感谢您

Fon*_*hau 6

我今天刚刚在我的代码中将MySQL扩展的所有功能都改为PDO.

为了最灵活,您应该使用如下常规连接创建"database.php":

<?php
$pdo = new PDO('mysql:host=example.com;dbname=database;charset=UTF-8', 
               'username', 
               'password');
Run Code Online (Sandbox Code Playgroud)

然后在其他页面中,使用require()包含这样的文件:

<?php
require('database.php');

// Example with 'query'
$queriedSQL = $pdo->query('SELECT * FROM table');

// Example with 'prepare'
$preparedSQL = $pdo->prepare('SELECT * FROM other_table WHERE id = ?');
$preparedSQL->setFetchMode(PDO::FETCH_ASSOC);

while($result = $queriedSQL->fetch(PDO::FETCH_ASSOC)) {
  $preparedSQL->execute(array($result['id']));
  $preparedSQLResult = $preparedSQL->fetch();
  // Process code here
}
Run Code Online (Sandbox Code Playgroud)

换句话说,您可以将"index.php"作为核心,然后处理URL或$_GET[]包含相应的文件(如所有CMS系统,Wordpress等).

这样,当某些数据(主机,用户名,密码和/或数据库名称)发生变化时,您可以避免更改代码量.

关于持久连接,PHP允许它,但是你可以在这里找到它们的缺点.