2012-05-11 16 views
8

Ho un nome di tabella tavole, e sto cercando di inserire i dati utilizzando il codice correntePHP DOP Errore di sintassi o violazione di accesso: 1064 su inserto

function createBoard($name, $desc ) { 
    try { 
     $sth = $this->getLink()->prepare("INSERT INTO boards(id,memberid,name,desc,datecreated,isactive) 
      VALUES(?,?,?,?,?,?)"); 

     $uuid = $this->uuid(); 
     $memberid = 1; 
     $date = Utils::getDate(); 
     $isactive = 1; 

     $sth->bindParam(1, $uuid); 
     $sth->bindParam(2, $memberid); 
     $sth->bindParam(3, $name); 
     $sth->bindParam(4, $desc); 
     $sth->bindParam(5, $date); 
     $sth->bindParam(6, $isactive); 
     return $sth->execute(); 
    } catch(PDOException $e) { 
     /* 
     * save the error to the error log defined as @ERROR_LOG 
     */ 
     file_put_contents(ERROR_LOG, ("\n" . Utils::getDate() . " : " . $e->getMessage()), FILE_APPEND); 
     die("FATAL ERROR...Please check the error log."); 
    } 
} 

Tuttavia, ogni volta che ottengo questo errore "2012-05-11 14:40:50: SQLSTATE [42000]: Errore di sintassi o violazione di accesso: 1064 Si è verificato un errore nella sintassi SQL, controllare il manuale corrispondente alla versione del server MySQL per la sintassi corretta da utilizzare vicino a " desc, DateCreated, isActive) VALUES ('d5989c7e-9b98-11e1-88cd-0026b936528c', '1' in linea 1 "

ho provato la stessa funzione utilizzando 01.239.999,734896 millionse semplicemente mettendo la matrice con valori diretti nella funzione $sth->execute() ma ricevo sempre lo stesso errore. Forse un occhio esterno può individuare qualcosa che mi manca o che non funziona?

risposta

28

Incapsula i nomi dei campi nei backtick (`), desc è una parola riservata.

$sth = $this->getLink()->prepare("INSERT INTO `boards` (`id`,`memberid`,`name`,`desc`,`datecreated`,`isactive`) 
      VALUES(?,?,?,?,?,?)"); 
+1

DOH! Sapevo di aver bisogno di un occhio esterno, grazie ccKep, lo accetterò come risposta quando me lo consente! – Naterade

Problemi correlati