Вызов функции-члена execute () для boolean в

Мой 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