【发布时间】:2015-12-25 09:07:03
【问题描述】:
我有一个关于何时何地必须建立和关闭与数据库的连接的问题。我有一组要插入或从数据库中删除的行,它是混合的。
(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 行的数组要插入/删除。有没有更好的方法来做到这一点?非常感谢。
【问题讨论】:
-
您不需要多次包含
connect.php。在顶部包含connect.php文件,然后在函数参数中传递 $conn 变量,如deleteRow($conn)或者你可以像deleteRow(){global $conn;......}一样使用它
标签: php database mysqli connection