Я пытался получить форму для вставки записей в базу данных MySQL, используя форму, но по какой-то причине это вызывает у меня ошибку, и я не могу понять, почему.
Вот код, который обрабатывает запрос:
if ($_SERVER['REQUEST_METHOD']=='POST'){
// database connection
try {
$dbh = new PDO('mysql:host='.$host.';dbname='.$dbName, $dbUser, $dbPass);
$dbh -> setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$dbh -> exec("SET NAMES 'utf8'");
} catch (Exception $e) {
echo "Error!: " . $e->getMessage() . "<br/>";
die();
}
// new data
$title = $_POST["txtTitle"];
$description = $_POST["txtDesc"];
$content = $_POST["txtContent"];
$sql = "INSERT INTO tblPageContent
SET (PageTitle, Description, PageContent)
VALUES (:title, :desc, :content)";
try {
$update = $dbh->prepare($sql);
$update->bindParam(":title",$title, PDO::PARAM_STR);
$update->bindParam(":desc",$description, PDO::PARAM_STR);
$update->bindParam(":content",$content, PDO::PARAM_STR);
$update->execute();
$id = $update->dbh->lastInsertId();
$update->dbh->commit();
echo $id;
} catch (Exception $e) {
echo "Data could not be updated in the database.";
echo $e;
exit;
}
}
Всякий раз, когда я пытаюсь использовать его, я получаю следующее:
исключение «PDOException» с сообщением «SQLSTATE [42000]: синтаксическая ошибка
или нарушение прав доступа: 1064 У вас ошибка в синтаксисе SQL; проверять
руководство, которое соответствует вашей версии сервера MySQL для права
синтаксис для использования около ‘(PageTitle, Description, PageContent) VALUES
(«Награды», «Это тест», «в строке 2»
Я пытался настроить синтаксис SQL, но все еще не могу заставить его работать. Есть что-то, чего я здесь не хватает?
Ваш insert
синтаксис НЕПРАВИЛЬНЫЙ.
Правильный синтаксис:
insert into tblPageContent (pageTitle, Description, PageContent)
values (:title, :desc, :content)
я советую тебе есть справочное руководство по MySQL под рукой
В вашем SQL, возьмите SET
до первого (
, Вы используете SET в обновлениях, а не во вставках.