Ich habe eine funktionierende INSERT-Anweisung, die es einem Besucher ermöglicht, ein Konto auf meiner Website zu erstellen.SELECT-Anweisung verursacht Aufruf an eine Memberfunktion bind_param() on boolean für eine Arbeitsanweisung
Ich versuche, eine SELECT-Anweisung zu erstellen, um zu überprüfen, ob der Benutzername, mit dem sie sich gerade anmeldet, existiert. Aus irgendeinem Grund, wenn die SELECT-Anweisung ausgeführt wird, bekomme ich eine Call to a member function bind_param() on boolean
auf die INSERT-Anweisung (Zeile 29).
Warum ist das? Ich habe meinen Code zur Verfügung gestellt ...
<?php
require '../manager-session.php';
require '../../db-config.php';
require '../../distributor-config.php';
$role = 'User';
$title = $_POST['title'];
$firstname = $_POST['firstname'];
$surname = $_POST['surname'];
$company = $_SESSION['userinfo']['company'];
$emailaddress = $_POST['emailaddress'];
$telephone = $_POST['telephone'];
$addressline1 = $_POST['addressline1'];
$addressline2 = $_POST['addressline2'];
$addressline3 = $_POST['addressline3'];
$towncity = $_POST['towncity'];
$county = $_POST['county'];
$postcode = $_POST['postcode'];
$username = $_POST['username'];
$password = $_POST['password'];
$stmt_check = "SELECT username FROM users WHERE username = ?";
$stmt_check = $conn->prepare($stmt_check);
$stmt_check->bind_param('s', $_POST['username']);
$stmt_check->execute();
if($stmt_check == true) {
$stmt = $conn->prepare("INSERT INTO users (role, distributor, company, title, firstname, surname, emailaddress, telephone, addressline1, addressline2, addressline3, towncity, county, postcode, username, password) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param("ssssssssssssssss", $role, $distributor, $company, $title, $firstname, $surname, $emailaddress, $telephone, $addressline1, $addressline2, $addressline3, $towncity, $county, $postcode, $username, $password);
$stmt->execute();
$to = "". $emailaddress ."";
$subject = "New User Account";
$txt = "". $firstname ." ". $surname ." has created a new User account for ". $distributor .". Please login using the following details:\n\nUsername: ". $username ."\nPassword: ". $password ."";
$headers = "From: [email protected]" . "\r\n" . "BCC: [email protected], [email protected] ". $distributoremail ."";
mail($to, $subject, $txt, $headers);
header('location: ../add-a-new-user.php?page=add-a-new-user&status=success');
exit();
}
else {
header('location: ../add-a-new-user.php?page=add-a-new-user&status=error');
exit();
}
$stmt->close();
$conn->close();
?>
I string (0) "get"? –
Oh, ich sehe, dass Sie vergessen haben, Ihre Aussage zu schließen. Rufe immer mysqli_stmt-> close(); nachdem Sie Ihre Daten abgerufen haben, weil mehrere Anweisungen nicht gleichzeitig aufgerufen werden können: '$ stmt_check-> close();' und '$ stmt-> close();'. Es ist seltsam, dass es keine Fehlermeldung gibt. – JensV