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

Php 为多个查询打开和关闭mysqli连接,php,database,mysqli,connection,Php,Database,Mysqli,Connection,我有一个关于何时何地必须建立和关闭数据库连接的问题。我有一个要插入数据库或从数据库中删除的行数组,它是一个混合体 (1) 这是我的代码,我只是测试插入到数据库中: include('connect.php'); foreach($array as $row) { if($row['insert']) { insertRow(); }else { //deleteRow(); } } function insertRow()

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

(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;
    }
}
(3) 它仍然不起作用,所以我把我的include移到这里,它终于起作用了:

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;
    }
}
函数insertRow()
{
包括('connect.php');
$sql=“插入sql语句”;
if($conn->query($sql)==TRUE){
echo“新记录创建成功”;
}否则{
echo“Error:”.$sql.“
”$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();
}
foreach($array作为$row)
{
如果($row['insert']))
{
insertRow();
}否则
{
deleteRow();
}
}
函数insertRow()
{
包括('connect.php');
$sql=“插入sql语句”;
if($conn->query($sql)==TRUE){
echo“新记录创建成功”;
}否则{
echo“Error:”.$sql.“
”$conn->Error; } conn->close(); } 函数deleteRow() { 包括('connect.php'); $sql=“删除sql语句”; if($conn->query($sql)==TRUE){ echo“新记录创建成功”; }否则{ echo“Error:”.$sql.“
”$conn->Error; } conn->close(); }

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

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

您的问题是,
$conn
在函数内部不可用。您需要声明
Global$conn
存在于您的函数之外,即:通过添加
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";
    ...

}

您不需要多次包含
connect.php
。在顶部包含
connect.php
文件,然后在函数参数中传递$conn变量,如
deleteRow($conn)
或者可以像
deleteRow(){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";
    ...

}