Мой html:
<form action="rent.php" method="post"><pre> Email : <input type="text" name="email"> Message : <input type="text" name="msg_text"> <input type="submit" value="Rent it"> </pre></form>
Мой файл rent.php:
<?php require_once 'login.php'; $conn = new mysqli($hn, $un, $pw, $db); if ($conn->connect_error) { die($conn->connect_error); } $query = "SET NAMES utf8"; $result = $conn->query($query); if (!$result) { die($conn->error); } $req = $conn->prepare('INSET INTO renter (email, msg_text) VALUES(?, ?)'); $req->execute(array($_POST['email'], $_POST['msg_text'])); header('Location: menu.php');
Моя ошибка при попытке отправить: Fatal error: вызов функции-члена execute () на boolean в C: … \ rent.php в строке 18
email, msg_text находятся в varchar-типе
mysqli->prepare
также может возвращать FALSE
(проверьте http://php.net/manual/en/mysqli.prepare.php ), если произошла ошибка. Ваша проблема в том, что у вас есть INSET
вместо INSERT
.
Ваш SQL подготовленный оператор должен быть исправлен, так как shudent сказал, но я думаю, вы также должны установить значения с помощью ->bind_param()
перед вызовом ->execute()
(который не принимает никаких параметров).
$stmt = $conn->prepare('INSERT INTO renter (email, msg_text) VALUES(?, ?)'); $stmt->bind_param("ss", $_POST['email'], $_POST['msg_text']); $stmt->execute();
См. Документацию и пример на официальном сайте PHP: http://php.net/manual/fr/mysqli.prepare.php