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