mysqli_connect()如何在PHP中运行?

时间:2014-05-17 21:20:31

标签: php mysql

如果我写这段代码:

mysqli_connect(host, username, password, dbname);

MySQL的这个功能应该连接到数据库。但如果我像这样重写它,

$con = mysqli_connect(host, username, password, dbname);

此函数也可以将它保存在变量'$ con'中。

我的问题是:

    $con = mysqli_connect(host, username, password, dbname);

这段代码没有连接到服务器,只能保存在$ con中。当我们调用$ con时,该函数应该执行。

3 个答案:

答案 0 :(得分:4)

$con=mysqli_connect(host,username,password,dbname);

上面的代码确实产生了与数据库的连接。 但是,需要检查生成的连接是否有错误。 通常通过以下方式:

if(!$con)
{ // creation of the connection object failed
    die("connection object not created: ".mysqli_error($con));
}

if (mysqli_connect_errno()) 
{ // creation of the connection object has some other error
    die("Connect failed: ".mysqli_connect_errno()." : ". mysqli_connect_error());
}

然后,只是为了让事情变得有趣...... 代码中的变量名称来自函数的原型字段名称,而不是需要实际传递的值。

这是一个更有用的mysqli_connect()函数执行

$myHost = "myDomainName.com"; // use your real host name
$myUserName = "myUserName";   // use your real login user name
$myPassword = "myPassword";   // use your real login password
$myDataBaseName = "myDataBaseName"; // use your real database name

$con = mysqli_connect( "$myHost", "$myUserName", "$myPassword", "$myDataBaseName" );

if( !$con ) // == null if creation of connection object failed
{ 
    // report the error to the user, then exit program
    die("connection object not created: ".mysqli_error($con));
}

if( mysqli_connect_errno() )  // returns false if no error occurred
{ 
    // report the error to the user, then exit program
    die("Connect failed: ".mysqli_connect_errno()." : ". mysqli_connect_error());
}

// when got here, successfully connected to database

Documentation

答案 1 :(得分:2)

如果我理解正确,您只想在实际需要时连接到数据库。为此,您可以使用函数来包装连接。如果您使此功能足够智能,它将只进行一次连接并在脚本持续时间内记住它。我已经逐行评论了它,以解释发生了什么。

<?php 
function con()
{
  // Static variables are remembered between function calls. Otherwise, each call
  // to the function would make a new connection.
  static $con = null;

  // Checks if there is a value assigned from a previous call.
  if ($con === null)
  {
      // If no connection was made before, it is made now and assigned to 
      // the static variable $con. Make sure to fill in the right user, password and
      // database here.
      $con = mysqli_connect('localhost', 'DBUserName', 'passw', 'DatabaseToUse');
  }
  // The connection is returned, whether it was made now or during a previous call.
  return $con;  
}

在您的代码中,您可以使用此函数而不是$con变量,因此您可以将其传递给mysqli_query,例如:

mysqli_query(con(), 'SELECT * FROM ATable');

答案 2 :(得分:1)

回答你的问题:

mysqli_connect()函数的结果分配给变量$con时,您将创建并打开与数据库的连接。除非您在脚本中释放此连接,否则该连接将保持打开状态,直到脚本完成执行。

如果您想要访问只有在需要打开连接时才能调用的函数,您可能会考虑创建一个包装函数:

function getDBConnection()
{
    return mysqli_connect($host, $user, $pass, $db);
}
...

$connection = getDBConnection();

您可以将包含此功能的文件包含在您的程序需要访问数据库的每个脚本中。请注意,您只想在每个文件中调用getDBConnection()一次调用。然后,只要您需要在该文件中访问该连接,就可以重新使用该连接。