2013-02-27 2 views
0

Я использую 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(); 
    } 
    ?> 
+0

Это не имеет ничего общего с PDO. Он будет жаловаться, если переменная не установлена. Вы можете использовать 'isset()', чтобы проверить его сначала –

+0

Попробуйте использовать 'print_r', чтобы увидеть массив' $ _POST', чтобы увидеть, действительно ли значение 'cat_name' существует. –

+0

Ошибка sql: ваши экранирующие таблицы и имена столбцов не используют одинарные кавычки, но обратные тики – AlexP

ответ

0

Вы уверены, что это «неопределенная переменная», а не «неопределенный индекс»? Если вы запустите этот скрипт как в форме рендеринга, так и в процессе обработки данных, вам необходимо проверить тип запроса, просто разместив if ($_POST) или более конкретный, например if (isset($_POST['cat_name']) && isset($_POST['cat_description']), перед любой обработкой данных.

+0

Я использовал функцию isset и перешел к неопределенному индексу. – DOWmad

+0

Похоже, вы ошиблись. Можете ли вы предоставить код с использованием isset? – Hast

+0

Ха, исправил это. Спасибо огромное! – DOWmad

Смежные вопросы