10

テーブルネームボードがあり、現在のコードを使用してデータを挿入しようとしています

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

ただし、このエラーが発生するたびに " 2012-05-11 14:40:50:SQLSTATE [42000]:構文エラーまたはアクセス違反:1064SQL構文にエラーがあります。MySQLサーバーに対応するマニュアルを確認してください。 'desc、datecreated、isactiveの近くで使用する正しい構文のバージョン)VALUES(' d5989c7e-9b98-11e1-88cd-0026b936528c'、' 1'at line 1 "

bindValue()直接値の配列を関数に使用して同じ関数を試しました$sth->execute()が、常に同じエラーが発生します。たぶん、外の目で私が見逃していることや間違っていることを見つけることができますか?

4

1 に答える 1

31

フィールド名をバッククォート(`)でカプセル化しますdesc。これは予約語です。

$sth = $this->getLink()->prepare( "INSERT INTO `boards` (`id`,`memberid`,`name`,`desc`,`datecreated`,`isactive`) 
            VALUES(?,?,?,?,?,?)" );
于 2012-05-11T18:46:37.307 に答える