2013-12-18 5 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

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