在head不好的做法中是mysql_connect吗?

时间:2013-08-28 15:25:50

标签: php mysql

我有一个普通的网站。它使用PHP来调用MySQL表。为了节省一直输入,我include()一个connect.php文件,在每个页面上为我连接数据库。该网站不断获得太多的连接"错误。在这样的页面开头连接是一个坏主意吗?

每次PHP脚本需要时,我是否应该创建一个新连接,然后在该脚本完成后用mysql_close关闭该连接?我曾经避免这样做,因为它会在网站上添加重复的代码行,但我想知道这是否是导致问题的原因?

所以目前我的代码与此相似:

<?php
include("connect.php"); //connects to database using mysql_connect() function
...
PHP script that calls mysql
...
another PHP script that calls mysql
?>

我应该把它改成这样的吗?

<?php
mysql_connect('host', 'username', 'password');
mysql_select_db('db');
PHP code that calls mysql
mysql_close();
...
mysql_connect('host', 'username', 'password');
mysql_select_db('db');
more PHP code that calls mysql
mysql_close();
?>

3 个答案:

答案 0 :(得分:2)

您应该尽可能避免与数据库建立新的连接。

建立与数据库的连接是一个缓慢且昂贵的过程。打开连接会消耗很少的资源。

顺便说一句,停止使用mysql_ *函数。使用mysqli_ *或PDO

答案 1 :(得分:1)

  

每次PHP脚本需要时都应该创建一个新连接[...]?

是的,这是最有意义的,特别是如果不是每个页面都需要mysql连接。

在PHP中,这可以通过在php.ini文件中设置数据库凭据来实现,只需调用mysql_select_db,如果到目前为止没有连接,它将自动连接到已配置的数据库。

如果您编写新代码,请将数据库连接封装在自己的对象中,这样您就可以在连接数据库时进行更细粒度的控制。

现代框架(例如 Silex )允许您延迟加载此类中央组件(服务),因此您已配置它们并可在需要时使用它们但您不必担心资源(例如示例中的连接限制)。

  

[...]在脚本完成后关闭与mysql_close的连接?

你通常不需要这样,因为PHP会为你做这件事。

答案 2 :(得分:0)

我认为这种编码方式没有任何问题。这一切都取决于你正在写什么样的应用程序。只要确保你检查好你的脚本并避免任何错误,你应该没问题。 这就是我通常做的事情

<?php session_start(); include "inc/config.php";
//require_once('chartz/lib/idiorm.php');
if ($_SESSION["login1"]== "Superadmin" or $_SESSION["login1"]== "User" or $_SESSION["login1"]=="Administrator")
{
    $snames = $_SESSION["name1"];
    $id = $_SESSION["id1"];
    $stype = $_SESSION["login1"];
    $stokperm = $_SESSION['stokperm'];
    $navtype = $_GET['nav'];
    include("inc/ps_pagination.php"); 
    }
  else
  {
    header ("location: ../../../index.php");
  }
?>

我不是说它是最好的方式,我们都还在学习......

我也非常认真地对待blue112的建议。我的大多数应用程序都是以旧式方式编写的,但使用mysqli_ *或PDO是可行的方法。