2012-05-11 22 views
8

Tôi có một bảng tên bảng, và tôi đang cố gắng để chèn dữ liệu bằng cách sử dụng mã hiệnPHP PDO Cú pháp lỗi hoặc vi phạm truy cập: 1064 trên chèn

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

Tuy nhiên, mỗi khi tôi nhận được lỗi này "2012-05-11 14:40:50: SQLSTATE [42000]: Lỗi cú pháp hoặc vi phạm truy cập: 1064 Bạn gặp lỗi trong cú pháp SQL của mình; hãy kiểm tra hướng dẫn tương ứng với phiên bản máy chủ MySQL của bạn để biết cú pháp đúng để sử dụng gần ' desc, datecreated, isactive) VALUES ('d5989c7e-9b98-11e1-88cd-0026b936528c', '1' tại dòng 1 "

Tôi đã thử chức năng tương tự bằng cách sử dụng bindValue() và chỉ đặt mảng với giá trị trực tiếp vào hàm $sth->execute() nhưng tôi luôn nhận được cùng một lỗi. Có lẽ một con mắt bên ngoài có thể phát hiện ra một cái gì đó tôi đang thiếu hoặc làm sai?

Trả lời

28

Đóng gói tên trường của bạn trong các dấu sau (`), desc là từ dành riêng.

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

DOH! Tôi biết tôi cần một con mắt bên ngoài, Cảm ơn ccKep Tôi sẽ chấp nhận nó như một câu trả lời khi nó cho phép tôi! – Naterade

Các vấn đề liên quan