Предупреждение: mysqli_close (): не удалось получить mysqli - PullRequest
0 голосов
/ 20 октября 2018

Я получаю эту ошибку:

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 работают одновременно, есть ли более эффективный способ их объединения?

Ответы [ 2 ]

0 голосов
/ 20 октября 2018

Я полагаю, что вы ошибаетесь с mysqli объектно-ориентированной версией с процедурной версией стиля, просто придерживайтесь одной, и я призываю вас использовать ООП.

В стиле ООП:

/* 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

0 голосов
/ 20 октября 2018

Трудно сказать с отступом, но в некоторых случаях вы закрываете соединение дважды ...

$conn->close();

}

mysqli_close($conn);

Они оба закроют соединение, поэтому второе произойдет сбой.Вероятно, легче удалить $conn->close();, поскольку он всегда будет падать до второго закрытия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...