Hallo allemaal,

Ik probeer op een pagina 2x een INPUT query uit te voeren.
De 1e komt uit een SQL bestand dat query's bevat voor het aanmaken van tabellen en data invoeren, de 2e moet lijden uit gebruikers invoer.

Als ik deze op dezelfde pagina uitvoer krijg ik echter de melding:
Commands out of sync; you can't run this command now


Na wat zoeken op Google kwam ik erachter dat ik hiervoor de function mysqli::free_result() moet gebruiken.
Dit lijd echter ook weer tot een error, namelijke deze:
Call to a member function free_result() on a non-object in ...


Ik heb het volgende script:
$data = array();
$mysqli = new mysqli($_POST['dbhost'], $_POST['dbusername'], $_POST['dbpassword'], $_POST['dbname']);

if (mysqli_connect_errno()) {
	$data['success'] = false;
} else {
	$data['success'] = true;
}

$query = file_get_contents("sql/tables.sql");
$result = $mysqli->multi_query($query);
	
if (!$result) {
	$data['install_step1'] = false;
	$data['error'] = $mysqli->error;
} else {
	$data['install_step1'] = true;
}

$result->free_result();
	
$query_users = "INSERT INTO nter_users (username, password) VALUES ('".$username."', '".$password_encrypted."')";
$mysqli->query($query_users);
	
if (!$result_users) {
	$data['install_step2'] = false;
	$data['error'] = $mysqli->error;
} else {
	$data['install_step2'] = true;
}


Weet iemand hoe ik deze fucntie wel correct moet gebruiken zodat ik deze 2 querys kan uitvoeren?

Groeten,
Niels
Het resultaat van mysqli::multi_query() is altijd een boolean: true of false. Daarna heeft $result->free_result() geen betekenis, want er is geen result set.
Hmmm, dat verklaart ook weer wat dan.

Uiteindelijk heb ik al oplossing de 2e query in mijn mysqli_multi_query geplaatst op deze manier:
$query = file_get_contents("sql/tables.sql");
$query .= "INSERT INTO nter_users (username, password) VALUES ('".$username."', '".$password_encrypted."');";
$result = $mysqli->multi_query($query);


Bedankt voor het antwoorden, kan geslosten worden

Reageren