PHP连接到MySQL:何时创建连接

时间:2019-05-24 09:06:03

标签: php mysql

当我了解有关PHP和MySQL的更多信息时,我对何时创建与服务器的连接感到非常困惑。我想知道每次执行新查询时是否都必须创建一个新连接。例如,如果要使用以下代码更新某些数据,是否需要创建两个连接?有人可以向我解释该机制吗?谢谢!

$db_con2=new mysqli(DB_HOST,DB_USERNAME,DB_PASSWORD,DB_NAME);
$db_con=new mysqli(DB_HOST,DB_USERNAME,DB_PASSWORD,DB_NAME);

if($db_con){

    some operations omitted

    $stmt = $db_con2->prepare("");
    $stmt->bind_param();
    $stmt->execute();   
}

mysqli_close($db_con2);
mysqli_close($db_con);

4 个答案:

答案 0 :(得分:3)

  1. 您可以通过使用完全限定的表标识符(即APIView
  2. )将单个连接用于不同的数据库。
  3. 不建议创建超出所需数量的连接(通常是一个),因为它会产生更多的开销,并且并行连接的数量也有上限(可以有多个请求x多个连接)。
  4. 您无法在MySQL afaik中的单个连接上执行的唯一操作是并行运行两个游标。这意味着,如果query1是一个select,则必须在发出query2之前获取query1的完整记录集。在遍历query1的结果时,不能发出query2(进一步选择或更新)。仅当您使用无缓冲查询时才如此。对于缓冲查询,PHP透明地为您完全读取和缓存每个记录集。如果您需要无缓冲查询,那么您可能会关心它。供进一步阅读:https://www.php.net/manual/en/mysqlinfo.concepts.buffering.php

答案 1 :(得分:2)

将连接视为变量。 $db_con作为连接,您可以在每个新脚本的开头(使用脚本中的类或包含的文件)建立此连接,然后就可以在该变量上运行所需的任何SQL查询。

不需要不需要手动关闭MySQLi连接,因为到达脚本末尾时,该连接会自动关闭。因此,不需要在脚本的最后一行加上$db_con->close()这是正确的语法)。

典型的脚本将包含一个包含连接数据的类或文件;在脚本顶部,然后在整个脚本中使用它,并且所有详细信息都会在脚本末尾自动被忘记。

也请不要与过程面向对象交互混淆。您当前使用的是面向对象的,但是您的mysqli_close()函数调用是 Procedural 调用,并且这两个方法彼此不交互。

答案 2 :(得分:1)

您需要做的就是为连接对象创建一个不同的文件,并在需要连接对象的文件中使用该文件(如果需要的话),如果您确定要使用相同的主机,则可以使用该文件。 ,整个项目中的数据库及其表。

这样,您可以保存您的LOC(代码行),从而使其达到最佳状态,这还将节省您的时间和不必要的繁琐工作。

也不需要每次都关闭连接。以下是可选的:

mysqli_close(CONNECTION_OBJECT);

答案 3 :(得分:0)

请根据此修改您的连接:

$mysqli_c1 = new mysqli($hostname, $username, $password, $database1); 
$mysqli_c2 = new mysqli($hostname, $username, $password, $database2); 

使用数据库1:

$mysqli_c1->query('select * from tablename');

使用数据库2:

$mysqli_c2->query('select * from tablename');

根据您的代码:

if($mysqli_c1->connect_errno){
   //Error handle code here
}else{
   //success code here
}