Синтаксическая ошибка SQLState 42000.Возможная проблема с таблицей? - PullRequest
0 голосов
/ 18 сентября 2018

Я застрял с синтаксической ошибкой для запроса SQL для вставки данных в таблицу.Ах, синтаксическая ошибка, самая бесполезная из всех ошибок !!

Использование кода, модифицированного из PHP Вставка данных в MySQL с использованием методов mysqli и PDO.Например:

<?php
$servername = "localhost";
$username = "4w_write";
$password = "GjByhJzrQueHgTzw";
$dbname = "4w_test";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql = "INSERT INTO 4w (email) VALUES ($email)";

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

Разобрав его до одной переменной, в которой не используется ключевое слово, я почти уверен, что проблема с моей таблицей.

Запрос SQL:

INSERT INTO 4w (email) VALUES (myemail@gmail.com)

Ошибка:

Ошибка: INSERT INTO 4w (электронная почта) VALUES (myemail@gmail.com) У вас есть ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MariaDB, чтобы узнать правильный синтаксис для использования рядом с '@ gmail.com)' в строке 1

Таблица SQL (4 Вт):

#   Name                 Type       Default 
1   id [Primary,Index]   int(11)
2   email                varchar(255)
3   whatIs               tinytext
4   whereIs              text
5   whattodo             text
6   imageURL             text
7   whenRep              timestamp  CURRENT_TIMESTAMP

Ответы [ 2 ]

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

Не вижу проблемы, пропущены кавычки .... Оригинальный код:

$sql = "INSERT INTO 4w (email) VALUES ($email)";

Фиксированный код:

$sql = "INSERT INTO 4w (email) VALUES ('$email')";
0 голосов
/ 18 сентября 2018

Значением электронной почты является строка, поэтому вам необходимо заключить его в кавычки:

$sql = "INSERT INTO 4w (email) VALUES ('$email')";

Или, что еще лучше, использовать подготовленный оператор и связать его значение.

...