2013-12-18 2 views
0

내가 프로젝트에 대한 PDO를 사용하고 있습니다하지만 난 제출에 구문 오류가 있습니다 PDO :는 ... 여기 내 코드 구문 오류

<?php 

require_once('_database.php'); 

    $titre = $_POST['titre']; 
    $text = $_POST['text']; 
    $date = date("Y-m-d"); 

try 
{    
    // Insertion dans la base de donnée       
    $requete = $connexion->exec("INSERT INTO article (id, idAuteur, titre, text, date) VALUES (0, 0, $titre, $text, $date)");   

    if (!$requete) { 
     echo "\nPDO::errorInfo():\n"; 
     print_r($connexion->errorInfo()); 
     echo $requete; 
    } 

} 
catch(Exception $e) 
{ 
    die('Erreur : '.$e->getMessage()); 
} 

?> 

그리고 이것은 내가 내 브라우저에서 무엇을 가지고 있습니다 :

내가 뭔가를 분명 잊어 버린하지만 볼 수없는 가정
PDO::errorInfo(): Array ([0] => 42000 [1] => 1064 [2] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 
Your contentrgrgrg 

, 2013-12-18)' at line 1) 

...

+4

왜 준비된 문을 무시하면 PDO를 사용합니까? – Mihai

+1

SQL을 생성 할 때 자리 표시 자 및 바운드 변수를 사용해야합니다. – andrewsi

답변

6

이미 PDO를 사용하고 있기 때문에, 당신은 prepared statements으로 매개 변수화 된 쿼리를 사용한다.

$stmt = $connexion->prepare("INSERT INTO article (id, idAuteur, titre, text, date) 
    VALUES (0, 0, ?, ?, ?)");   
$stmt->execute(array($titre, $text, $date)); 
+1

또한 언급 할 가치가있는 :': id'와 같은 명명 된 자리 표시 자. 이렇게하면 바인딩 호출을 훨씬 쉽게 읽을 수 있습니다. – tadman

+0

네 말이 맞아. – Keilrod