0
私は、自分のWebサイトに訪問者がアカウントを作成できるようにするINSERTステートメントがあります。SELECTステートメントが原因で、メンバー関数bind_param()がブール値のブール値を返しています。
登録しようとしているユーザー名が現在存在するかどうかを確認するSELECT文を作成しようとしています。なんらかの理由で、SELECT文が実行されると、INSERT文(行29)にCall to a member function bind_param() on boolean
が得られます。
これはなぜですか?私は、プリペアドステートメントが失敗したとき
<?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();
?>
私は(0) "" 文字列を取得? –
ああ、あなたもあなたの声明を閉じるのを忘れてしまったのが分かります。常にmysqli_stmt-> close()を呼び出します。 '$ stmt_check-> close();'と '$ stmt-> close();'のように複数のステートメントを同時に呼び出すことができないため、データを取得した後に、それは間違いなくerrormessageがあることは奇妙です。 – JensV