Я использую PDO, но я путать с ошибкой неопределенной переменной здесь:PHP форма неопределенная переменная
Это касается переменной cat_name только после подключения к базе данных.
Я добавил значения непосредственно к переменным. Он изменил эту ошибку до:
SQLSTATE [42000]: Ошибка синтаксиса или нарушение доступа: 1064 У вас возникла ошибка в синтаксисе SQL; проверьте руководство, которое соответствует версии сервера MySQL для правильного синтаксиса, чтобы использовать рядом с «» категории «(» cat_name «„cat_description“) VALUES („ohnoe“,„ohnoes“)» в строке 1
<?php
try{
include 'database.php';
$db = database:: getConnection();
$catName = "ohnoe";
$catDesc = "ohnoes";
if(isset($_POST['submit'])){
if(isset($_POST['cat_name'])){
$catName = $_POST['cat_name'];
}
else{
echo "already set";
}
if(isset($_POST['cat_description'])){
echo"Oh dear";
}
else{
$catDesc = $_POST['cat_description'];
}}
$sqlQuery = ("INSERT INTO 'categories'('cat_name', 'cat_description') VALUES (:cat_name,:cat_description)");
$statement = $db->prepare($sqlQuery);
$statement->bindValue(":cat_name",$catName);
$statement->bindValue(":cat_description",$catDesc);
$count = $statement->execute();
$db = null;
}catch(PDOException $e){
echo $e->getMessage();
}
?>
Это не имеет ничего общего с PDO. Он будет жаловаться, если переменная не установлена. Вы можете использовать 'isset()', чтобы проверить его сначала –
Попробуйте использовать 'print_r', чтобы увидеть массив' $ _POST', чтобы увидеть, действительно ли значение 'cat_name' существует. –
Ошибка sql: ваши экранирующие таблицы и имена столбцов не используют одинарные кавычки, но обратные тики – AlexP