2012-05-11 10 views
8

Mam deski nazwa tabeli i próbuję wstawić dane używając aktualnego koduPHP PDO Syntax error lub dostępu naruszenie: 1064 na wkładkę

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."); 
    } 
} 

Jednakże, za każdym razem otrzymuję ten błąd "2012-05-11 14:40:50: SQLSTATE [42000]: Błąd składniowy lub naruszenie zasad dostępu: 1064 Wystąpił błąd w składni SQL, sprawdź instrukcję, która odpowiada twojej wersji serwera MySQL dla właściwej składni do użycia w pobliżu ' desc, datecreated, isactive) WARTOŚCI ('d5989c7e-9b98-11e1-88cd-0026b936528c', '1' na linii 1 "

próbowałem samą funkcję z wykorzystaniem bindValue() i właśnie umieszczając tablicę z bezpośrednimi wartościami w funkcji $sth->execute(), ale zawsze otrzymuję ten sam błąd. Może zewnętrzne oko może dostrzec coś, czego mi brakuje lub robi coś złego?

Odpowiedz

28

Enkapsulacja nazw pól w tyłach (`), desc jest słowem zastrzeżonym.

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

DOH! Wiedziałem, że potrzebuję oka zewnętrznego, Dzięki ccKep Przyjmę to jako odpowiedź, kiedy mi pozwoli! – Naterade