// if the 'id' variable is not set in the URL, we must be creating a new record else { // if the form's submit button is clicked, we need to process the form if (isset($_POST['submit'])) { // get the form data $mtcn = htmlentities($_POST['mtcn'], ENT_QUOTES); $amount = htmlentities($_POST['amount'], ENT_QUOTES); $currency = htmlentities($_POST['currency'], ENT_QUOTES); $sender_name = htmlentities($_POST['sender_name'], ENT_QUOTES); $sender_country = htmlentities($_POST['sender_country'], ENT_QUOTES); $receiver_name = htmlentities($_POST['receiver_name'], ENT_QUOTES); $comment = htmlentities($_POST['comment'], ENT_QUOTES); $support = htmlentities($_POST['support'], ENT_QUOTES); $email = htmlentities($_POST['email'], ENT_QUOTES); // check that mtcn and amount are both not empty if ($mtcn == '' || $amount == '') { // if they are empty, show an error message and display the form $error = 'ERROR: Please fill in all required fields!'; renderForm($mtcn, $amount, $currency, $sender_name, $sender_country, $receiver_name, $comment, $support, $email, $error); } else { // insert the new record into the database if ($stmt = $mysqli->prepare("INSERT date (mtcn, amount, currency, sender_name, sender_country, receiver_name, comment, support, email) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)")) { $stmt->bind_param("ss", $mtcn, $amount, $currency, $sender_name, $sender_country, $receiver_name, $comment, $support, $email); $stmt->execute(); $stmt->close(); } // show an error if the query has an error else { echo "ERROR: Could not prepare SQL statement."; } // redirec the user // header("Location: view.php"); } } // if the form hasn't been submitted yet, show the form else { renderForm(); } } // close the mysqli connection $mysqli->close();
Когда я запускаю сценарий, я получаю сообщение об ошибке:
Предупреждение: mysqli_stmt :: bind_param () [mysqli-stmt.bind-param]: Число элементов в строке определения типа не соответствует числу переменных связывания в C: \ wamp \ www \ records.php в строке 205 Предупреждение: mysqli_stmt :: execute () [mysqli-stmt.execute]: (HY000 / 2031): данные не предоставлены для параметров в подготовленном операторе в C: \ wamp \ www \ records.php в строке 206
Любая идея, как я могу это исправить? Я подсчитал параметры от bind_param, и они кажутся мне прекрасными …
Думаю, вам нужно больше?
$stmt->bind_param("ss", $mtcn, $amount, $currency, $sender_name, $sender_country, $receiver_name, $comment, $support, $email);
попробуйте это (если они все строки)
$stmt->bind_param("sssssssss", $mtcn, $amount, $currency, $sender_name, $sender_country, $receiver_name, $comment, $support, $email);