Я получаю следующую ошибку: когда я пытаюсь вставить данные из формы в базу данных, используя php. Может кто-нибудь, пожалуйста, дайте мне знать, почему это так?Почему я получаю сообщение об ошибке с инструкцией по подготовке при попытке вставить в базу данных
Warning: mysqli::query() expects parameter 1 to be string, object given in C:\xampp\htdocs\westend\process.php on line 25
Catchable fatal error: Object of class mysqli_stmt could not be converted to string in C:\xampp\htdocs\westend\process.php on line 28
Это мой код
<?php
session_start();
if (isset($_POST['sub'])) {
$host='localhost';
$user='root';
$pass='';
$db='theatre_booking';
$con=mysqli_connect($host,$user,$pass,$db);
$row= mysqli_real_escape_string($con, $_SESSION['row']);
$zone= mysqli_real_escape_string($con, $_SESSION['zone']);
$quantity= mysqli_real_escape_string($con, $_SESSION['qty']);
$quote= mysqli_real_escape_string($con, $_SESSION['quotation']);
$sql=$con->prepare("INSERT INTO booking(PerfDate, PerfTime, Name, Email, Zone, RowNumber)
VALUES (
'{$_SESSION['date']}',
'{$_SESSION['time']}',
'{$_SESSION['name']}',
'{$_SESSION['email']}',
'{$_SESSION['zone']}',
'{$_SESSION['row']}')");
if ($con->query($sql) === TRUE) {
echo "Booking successful";
} else {
echo "Error: " . $sql . "<br>" . $con->error;
}
}
?>
'$ con> query ($ sql)' должен быть '$ sql-> execute();'. Использование прямого запроса не связано с подготовкой инструкций. Вам просто нужно выполнить его вместо :-) – Qirel
Вы также должны использовать заполнители и связывать переменные, если вы используете подготовленные инструкции, а не вводите значения непосредственно в инструкцию, которую вы готовите ..... иначе в чем смысл использования подготовленные заявления? –
И если вы использовали переменные связывания, вам не нужно использовать 'mysqli_real_escape_string()' либо –