Achtung: mysqli_close (): Kann nicht holen Mysqli

stimmen
-2

Ich erhalte diese Fehlermeldung:

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

Hier ist mein Code:

    <?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);

?>

Ich will es nur den MySQL-Eintrag aktualisieren, wenn alles erfolgreich war. Ich vermute, es ist ein Fehler, der zwei MySQL Dinge auf einmal los, ist es eine effizientere Art und Weise, sie zu kombinieren?

Veröffentlicht am 20/10/2018 um 12:34
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
0

Ich denke , Sie verwirren mit bis mysqliobjektorientierte Version mit prozeduralen Stil Version, nur Stick mit ein und ich fordere Sie OOP zu verwenden.

In OOP-Stil:

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

/* close connection */
$mysqli->close();

In Verfahren Stil:

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


/* close connection */
mysqli_close($link);

Siehe Beispiele http://php.net/manual/en/mysqli.affected-rows.php

Beantwortet am 20/10/2018 um 12:43
quelle vom benutzer

stimmen
0

Es ist schwierig, mit der Vertiefung zu sagen, aber in einigen Fällen wird die Verbindung zweimal in die Nähe ...

$conn->close();

}

mysqli_close($conn);

Diese werden sowohl die Verbindung schließen, so dass der zweite wird fehlschlagen. Wahrscheinlich einfacher das zu entfernen , $conn->close();wie es immer in die zweite Nähe fallen.

Beantwortet am 20/10/2018 um 12:38
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more