【问题标题】:Warning: mysqli_close(): Couldn't fetch mysqli [duplicate]警告:mysqli_close():无法获取 mysqli [重复]
【发布时间】:2019-03-25 03:10:57
【问题描述】:

我收到此错误:

Warning: mysqli_close(): Couldn't fetch mysqli in sendinvoice.php on line 54

这是我的代码:

    <?php
include 'dbconfig.php';
ob_start();

$taxcb = $_POST['taxcb'];
$taxrate = $_POST['taxrate'];
$bcctocb = $_POST['bcctocb'];
$bcctotxt = $_POST['bcctotxt'];
$duedate = $_POST['duedate'];
$issuedate = $_POST['issuedate'];
$additemscb = $_POST['additemscb'];
$additemname = $_POST['additemname'];
$additemprice = $_POST['additemprice'];
$q = $_POST['rowid'];

$sql="SELECT * FROM clients WHERE id = '".$q."'";

$result = mysqli_query($conn,$sql);

while($row = mysqli_fetch_array($result)) {


$to = $row[email];
$subject = "Invoice Test " . date('m/d/Y h:i:s a', time());
include 'invoice.html';
$message = ob_get_clean();

// Always set content-type when sending HTML email
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";

// More headers
$headers .= 'From: <billing@example.com>' . "\r\n";
if ($bcctocb == "y"){
$headers .= 'BCC: ' . $bcctotxt . "\r\n";
}

mail($to,$subject,$message,$headers);

$sql = "UPDATE clients SET last_billed='" . date("Y-m-d H:i:s") . "' WHERE id=" . $q;

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

$conn->close();

}

mysqli_close($conn);

?>

我只希望它在一切都成功的情况下更新 MySQL 条目。我怀疑同时进行两个 MySQL 事情是错误的,有没有更有效的方法来组合它们?

【问题讨论】:

  • 脚本终止后无论如何都会释放连接。手动操作没有意义。

标签: php mysql mysqli


【解决方案1】:

用缩进很难分辨,但在某些情况下你会关闭连接两次...

$conn->close();

}

mysqli_close($conn);

这些都将关闭连接,因此第二个将失败。 删除$conn-&gt;close(); 可能更容易,因为它总是会落到第二次关闭。

【讨论】:

    【解决方案2】:

    我猜你把mysqli 面向对象的版本和程序风格的版本搞混了,坚持一个,我敦促你使用 OOP。

    OOP 风格:

    /* do connection */
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");
    
    /* close connection */
    $mysqli->close();
    

    程序风格:

    /* do connection */
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");
    
    
    /* close connection */
    mysqli_close($link);
    

    查看示例 http://php.net/manual/en/mysqli.affected-rows.php

    【讨论】:

    猜你喜欢
    • 2017-02-28
    • 2014-09-18
    • 2014-08-14
    • 1970-01-01
    • 2018-05-31
    • 2020-02-07
    • 2019-01-09
    相关资源
    最近更新 更多