制御文字列"sssd"によって4つの引数のみをバインドしましたが、多くのパラメーターがあります。変数をmysqliにバインドする場合、パラメーターごとに1文字が必要です。例:
mysqli_stmt_bind_param($stmt, "sssdsssssssssdd", $firstname, $surname, $address,
$gender, $city, $province, $postalcode, $phone, $secondphone, $email,
$organization, $inriding, $ethnicity, $senior, $student);
(私は、先輩と学生が整数であり、「d」コードが必要であると想定しています。)
mysqli_real_escape_string()で変数を処理する必要はありません。これが、パラメーターを使用するポイントです。エスケープも行うと、データベースのデータに文字通りの円記号が含まれるようになります。
また、どのような場合でもhtmlspecialchars()を使用する必要はありません。データベースに挿入するときではなく、HTMLに出力するときに使用します。 &
のようなリテラルシーケンスを取得します データベース内のデータにあります。
次のエラーについて:
これは次の原因によるものです:
$result = mysqli_query($mysqli,$stmt);
この関数は、2番目の引数が文字列(新しいSQLクエリ)であることを想定しています。ただし、そのクエリはすでに準備されているため、次のものが必要です。
$result = mysqli_stmt_execute($stmt);