php 插入查询 - 为什么有两个数据库连接


php Insert Query - Why Are There Two Connections to a Database?

在我的脚本中,我链接到连接到我的数据库的页面:

包括"连接.php";

连接.php

<?php
error_reporting(E_ERROR);
/* Allows PHP to connect to your database */
// Database Variables
$Host = "myhost";
$User = "username";
$Password = "password";
$DBName = "database";
// Connect to Database
$connect = mysql_connect($Host, $User, $Password) 
or die ("Could not connect to server ... 'n" . mysql_error ());
mysql_select_db($DBName) 
or die ("Could not connect to database ... 'n" . mysql_error ());
?

然后在另一个脚本中,我有一个插入查询:

include "connect.php";
$Link = mysql_connect($Host, $User, $Password);
$Query = "INSERT INTO mytable VALUES ('0','".mysql_escape_string($forename)."','".mysql_escape_string($surname)."', '".mysql_escape_string($username)."', '".mysql_escape_string($password)."', '".mysql_escape_string($email)."')";
        if(mysql_db_query ($DBName, $Query, $Link)) {
            $message = "You have successfully registered";
            header("Location: register.php?message=".urlencode($message));
        } else {
            die("Query was: $Query. Error: ".mysql_error($Link));
        }
    }
}

为什么这是必要的:

$Link = mysql_connect($Host, $User, $Password);

连接不是已经建立吗?

这样做

是没有意义的,特别是因为如果没有给出任何连接mysql_*函数将承担上次打开的连接。

但是,即使两次调用mysql_connect,也只建立一次连接。从文档中:

如果对具有

相同参数的mysql_connect()进行第二次调用,则不会建立新链接,而是返回已打开链接的链接标识符。new_link 参数修改此行为,并使mysql_connect()始终打开新链接,即使之前使用相同的参数调用mysql_connect()也是如此。

因此,默认情况下,将返回现有连接。