2013-02-27 4 views
0

은 내가 PDO를 사용하고 있지만 여기에 정의되지 않은 변수의 오류와 혼란 스러워요 :PHP 양식 정의되지 않은 변수

그냥 데이터베이스 연결 후 변수 cat_name에 관한 것이다.

변수에 값을 직접 추가했습니다. 오류를 다음으로 변경했습니다.

SQLSTATE [42000] : 구문 오류 또는 액세스 위반 : 1064 SQL 구문에 오류가 있습니다. 라인 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
에서 ('cat_name', 'cat_description') VALUES ('ohnoe', 'ohnoes을') '근처'카테고리 '를 사용할 수있는 권리 구문에 대한 MySQL 서버 버전에 해당하는 설명서를 확인

"정의되지 않은 변수"가 아닌 "정의되지 않은 색인"입니까? 이 스크립트를 렌더링 양식과 프로세스 데이터 모두에서 실행하면 if ($_POST) 이상의 데이터를 처리하기 전에 if (isset($_POST['cat_name']) && isset($_POST['cat_description'])과 같이 구체적으로 입력하여 요청 유형을 확인해야합니다.

+0

나는 isset 함수를 사용했으며 정의되지 않은 인덱스로 이동했습니다. – DOWmad

+0

당신이 잘못한 것처럼 보입니다. isset을 사용하여 코드를 제공 할 수 있습니까? – Hast

+0

하아, 고쳐. 정말 고맙습니다! – DOWmad