mysqli:连接和查询以及效率

mysqli: connection and queries and efficiency

我是一个相当新的 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");

然后 运行查询

然后关闭数据库连接。

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

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

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

任何关于为什么我可能是错的或者为什么在你需要的地方打开完整连接然后再次关闭它可能更好的见解将不胜感激。我想知道它是如何发挥最佳作用的,这样我就可以尽可能地进行最佳编码实践....

但让我们假装我什至只有一个数据库。同样的逻辑也适用。在我的脚本顶部打开一个数据库连接是否更有效,保持它打开整个脚本 运行 并且只使用不同的 $querynames 对同一个数据库执行查询而不是打开它,运行 查询,关闭它,然后对所有查询执行 10 次不同的操作。多次打开和关闭连接并增加开销对我来说似乎毫无意义。我从代码中学到的例子是坏的还是有原因的

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

$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);

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