mysqli:连接和查询以及效率

时间:2015-04-20 18:34:34

标签: php mysql sql-server database mysqli

我是一个相当新的php程序员。我已经学习了几个星期,在那几周里,我已经从hello world脚本中修改了其他脚本并安装和修改它们。现在我正在编写自己的文章,在编写过程中,我有点顿悟......因为我一直在修改和玩弄的脚本是以某种方式完成的,所以我也是这样开始的。但是现在我认为它可能是低效的编码,或者我的想法因某种原因是错误的。

我的脚本是index.php,它是一个互动网站,有用户。我有4个不同的数据库存储某种形式的数据。第一个数据库专注于用户及其数据。其他的东西,等等。

我编写它的方式是,无论何时我需要对数据库进行查询,在脚本开头我都会定义所有数据库连接变量,例如

$servername = "127.0.0.1";
$dbusername = "dbusername";

    $dbpassword = "passwordhere";
    $dbname = "database1";
    $roomdb = "database2";

等 等

所以在我的脚本中的各种不同点上都需要运行数据库查询,所以我一直打开这样的连接

$link = mysqli_connect("$servername", "$dbusername", "$dbpassword", "$roomdb");

然后运行查询

然后关闭数据库连接。

然后我正在洗澡并突然想到..为什么我只能在我的脚本顶部定义数据库连接信息,只需打开每个数据库的ONE连接。然后运行整个脚本,只使用我需要使用它们的查询..如果我需要对一个数据库进行多次查询,只需对查询命名。比如$ query1,$ query2等查询就像

$query = "INSERT INTO `$room` (room, message, color) VALUES ('$room', '$randomvariable', '$randomvariable')";

这有意义吗?在我看来,如果我每次运行脚本时几乎肯定必须与每个数据库建立多个连接,即使有机会我偶尔也不需要其中一个连接,那就更多了有效率,只需在开始时连接一次,让它可用​​,然后为每个不同的查询使用唯一的查询名称,然后关闭脚本末尾的连接?

任何关于为什么我可能出错的见解或为什么最好在你需要的地方打开完整的连接然后再关闭它将不胜感激。我想知道它是如何最好的,所以我可以做出最好的编码实践....

但是假装我甚至有一个数据库。同样的逻辑适用。在我的脚本顶部打开一个数据库连接更有效率,保持它打开整个脚本运行并只使用不同的$ querynames执行查询到同一个数据库而不是打开它,运行查询,关闭它,并为所有查询执行10次不同的操作。我多次打开和关闭连接并增加开销似乎毫无意义。这些例子我只是从代码中学习不好或是否有理由

1 个答案:

答案 0 :(得分:2)

我们需要将每个连接处理程序保存在不同的变量

$link1 = mysqli_connect("$servername", "$dbusername", "$dbpassword", "$roomdb");    
$link2 = mysqli_connect("$servername", "$dbusername", "$dbpassword", "$dbname");

然后分别为每个使用$ link_identifier,以便我们知道连接到

的内容
mysqli_query($link1,"INSERT INTO `$room` (room, message, color) VALUES ('$room', '$randomvariable', '$randomvariable'");

mysqli_close($link1);

注意:打开连接时间过长并不是一个好的编码标准。我们只会在需要查询该数据库中的任何内容时进行连接,并在事务结束后立即关闭连接。