打开和关闭多个查询的mysqli连接

时间:2015-09-28 07:23:08

标签: php database mysqli connection

我有一个关于何时何地必须建立和关闭数据库连接的问题。我有一系列要插入数据库或从数据库中删除的行,它是一个混合体。

(1)这是我的代码,我只是测试插入数据库:

include('connect.php');

foreach($array as $row)
{
    if($row['insert'])
    {
       insertRow();
    }else
    {
        //deleteRow();
    }
}

function insertRow()
{
    $sql = "insert sql statement";

    if ($conn->query($sql) === TRUE) {
        echo "New record created successfully";
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }
}

(2)这不起作用。所以我在这里移动我的包含文件:

foreach($array as $row)
{
    include('connect.php');
    if($row['insert'])
    {
       insertRow();
    }else
    {
        //deleteRow();
    }
}

(3)它仍然无法工作,所以我将我的包含移到最终有效的位置:

function insertRow()
{
    include('connect.php');
    $sql = "insert sql statement";

    if ($conn->query($sql) === TRUE) {
        echo "New record created successfully";
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }
}

所以我的问题是: 我必须为每个sql查询建立连接,然后关闭它吗?那么对于我想要做的事情,它会看起来像这样吗?

foreach($array as $row)
{

    if($row['insert'])
    {
       insertRow();
    }else
    {
        deleteRow();
    }
}

function insertRow()
{
    include('connect.php');
    $sql = "insert sql statement";

    if ($conn->query($sql) === TRUE) {
        echo "New record created successfully";
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }
    conn->close();
}

function deleteRow()
{
    include('connect.php');
    $sql = "delete sql statement";

    if ($conn->query($sql) === TRUE) {
        echo "New record created successfully";
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }
    conn->close();
}

然而,这似乎效率低下,特别是如果我有一个100个行的数组要插入/删除。有没有更好的方法呢?非常感谢。

1 个答案:

答案 0 :(得分:3)

多次添加include肯定是错误的。在脚本顶部进行一次连接,然后可以在整个过程中使用它。

您的问题是您的功能无法使用$conn。您需要声明$conn存在&#39;外面&#39;你的函数,即:全局范围,在每个函数中添加global $conn;

// Create $conn in Global Scope
include('connect.php');

function insertRow()
{
    //include('connect.php');
    global $conn;

    $sql = "insert sql statement";
    ...

}

function deleteRow()
{
    global $conn;

    $sql = "delete sql statement";
    ...

}