проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с '?,?,?,? - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь создать форму и импортировать отправленные данные в базу данных,

<?php
// db has to be manually created first
$host = "localhost";
$userName = "user";
$password = "";
$dbName = "test";

// Create database connection
$conn = new mysqli($host, $userName, $password, $dbName);

// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}


if((isset($_POST['your_name'])&& $_POST['your_name'] !='') && (isset($_POST['your_email'])&& $_POST['your_email'] !=''))
{

$yourName = $conn->real_escape_string($_POST['your_name']);
$yourEmail = $conn->real_escape_string($_POST['your_email']);
$yourPhone = $conn->real_escape_string($_POST['your_phone']);
$comments = $conn->real_escape_string($_POST['comments']);


$sql = "INSERT INTO contact_form_info (name, email, phone, comments)
        VALUES (?,?,?,?)";



//$stmt = mysqli_prepare($sql);
//if ($stmt = $conn->prepare(" INSERT INTO contact_form_info WHERE name = ?  email = ? phone = ? comments = ? ")) {
if ($stmt = $conn->prepare($sql)) {

$stmt->bind_param("ssss", $yourName, $yourEmail, $yourPhone,$comments);

$stmt->execute();
}

Когда я отправляю свою форму, я получаю следующую ошибку

проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с '?,?,?,?) "

Может кто-нибудь проверить мой код и сказать, что с ним не так?

И заранее спасибо

1 Ответ

0 голосов
/ 12 сентября 2018

Эта ошибка показывает, что по какой-то причине знаки вопроса не привязаны к соответствующим переменным.MySQL жалуется, потому что знаки вопроса не инкапсулированы с указанием "".

Ass @RiggsFolly, вам не нужно вызывать $conn->real_escape_string, поскольку вы используете подготовленные операторы.

(Кроме того, нет необходимости проверять isset() и пустую строку, empty() в любом случае делает isset)

<?php
// db has to be manually created first
$host = "localhost";
$userName = "user";
$password = "";
$dbName = "test";

// Create database connection
$conn = new mysqli($host, $userName, $password, $dbName);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

if(!empty($_POST['your_name']) && !empty($_POST['your_email']) {

    $sql = "INSERT INTO contact_form_info (name, email, phone, comments) VALUES (?,?,?,?)";

    $stmt = $conn->prepare($sql);

    $stmt->bind_param("ssss", $_POST['your_name'], $_POST['your_email'], $_POST['your_phone'],$_POST['comments']);

    $stmt->execute();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...