Php 为多个查询打开和关闭mysqli连接
我有一个关于何时何地必须建立和关闭数据库连接的问题。我有一个要插入数据库或从数据库中删除的行数组,它是一个混合体 (1) 这是我的代码,我只是测试插入到数据库中: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()
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";
...
}