Uncaught Error: mysqli object is already closed was tun?


22.07.2021, 19:52

Noch mal der ganze error

Fatal error: Uncaught Error: mysqli object is already closed in /mnt/web016/e0/16/511052116/htdocs/cgi-bin/Inventar/index.php:36 Stack trace: #0 /mnt/web016/e0/16/511052116/htdocs/cgi-bin/Inventar/index.php(36): mysqli->query() #1 {main} thrown in /mnt/web016/e0/16/511052116/htdocs/cgi-bin/Inventar/index.php on line 36

23.07.2021, 15:20

Ganzer Code:

<?php session_start();
require_once('dbconnection.php');



error_reporting(E_ALL);
ini_set('display_errors', true);
ini_set('mysql.trace_mode', true);





//Code for Registration 
if(isset($_POST['signup']))
{
	$fname=$_POST['fname'];
	$lname=$_POST['lname'];



$msg = $con->query("INSERT INTO users(fname,lname) VALUES('$fname','$lname')");
$row_count = $result->num_rows;
if($row_count>3)
{
	echo "<script>alert('Artikel befindet sich schon 3 mal in der Truhe');</script>";
} else{
$msg=mysqli_query($con,"insert into users(fname,lname) values('$fname','$lname')");
}
if($msg)
{
	echo "<script>alert('Erfolgreich Eingetragen');</script>";
}
}?>

2 Antworten

Lies doch einfach mal die Fehlermeldung (dazu ist sie da) und vergleiche mit deinem gesamten Skript. Du wirst die Verbindung zur Datenbank schon wieder geschlossen haben. In Zeile 36 versuchst du aber dennoch, wieder Anfragen an diese zu stellen.


Jakob265 
Fragesteller
 23.07.2021, 14:07

Ich konnte in meinen script aber keine stelle finden wo ich die verbindung geschlossen habe.

<?php session_start();
require_once('dbconnection.php');


$db_server = '...';
$db_benutzer = '...';
$db_passwort = '...';




// Create connection
$con = new mysqli($db_server, $db_benutzer, $db_passwort);


// Check connection
if ($con->connect_error) {
  die("Connection failed: " . $con->connect_error);
}
echo "Connected successfully";




error_reporting(E_ALL);
ini_set('display_errors', true);
ini_set('mysql.trace_mode', true);








//Code for Registration 
if(isset($_POST['signup']))
{
	$fname=$_POST['fname'];
	$lname=$_POST['lname'];


$result = $con->query("select id from users where fname='$fname'");
$row_count = $result->num_rows;
if($row_count>3)
{
	echo "<script>alert('Artikel befindet sich schon 3 mal in der Truhe');</script>";
} else{
$msg=mysqli_query($con,"insert into users(fname,lname) values('$fname','$lname')");
}
if($msg)
{
	echo "<script>alert('Erfolgreich Eingetragen');</script>";
}
}
?>
0
regex9  23.07.2021, 15:33
@Jakob265

Wieso ist das Prepared Statement wieder raus und wieso ignorierst du auch die anderen Punkte, die ich dir bei deiner vorherigen Frage schon längst einmal aufgeführt habe?

0

Du mischt schon wieder die Klassen-Schreibweise mit der prozeduralen! Schau dir doch einfach mal den Code an und versuche ihn zu verstehen.

So muss es heißen:

$msg = $con->query("INSERT INTO users(fname,lname) VALUES('$fname','$lname')");
Woher ich das weiß:Berufserfahrung – Entwickle seit > 20 Jahren Anwendungen mit PHP.

Jakob265 
Fragesteller
 23.07.2021, 15:18

Danke..

Mir wurde jedoch wieder die gleiche Meldung angezeigt.

0
Babelfish  23.07.2021, 15:37
@Jakob265

Wenn das dein ganzer Code ist, hast du $con ja auch nirgendwo initialisiert. Vergleiche das doch einfach mit deinen früheren Quellcode, wo das noch drin war.

0
Jakob265 
Fragesteller
 24.07.2021, 09:44
@Babelfish

Ich habe dass $con in dbconnection.php initialisiert und ich werde auch dass prepared System wieder anwenden.

0