PHP PDO语法错误或访问冲突:插入时为1064 [英] PHP PDO Syntax error or access violation: 1064 on insert

查看:79
本文介绍了PHP PDO语法错误或访问冲突:插入时为1064的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个表格名称板,我正在尝试使用当前代码插入数据

I have a table name boards, and I'm trying to insert data using the current code

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]:语法错误或访问冲突:1064您的SQL语法有错误;请查看手册对应于您的MySQL服务器版本的语法,以便在'desc,datecreated,isactive)VALUES('d5989c7e-9b98-11e1-88cd-0026b936528c','1'在第1行附近使用正确的语法"

However, every time I get this error "2012-05-11 14:40:50 : SQLSTATE[42000]: Syntax error or access violation: 1064 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 'desc,datecreated,isactive) VALUES('d5989c7e-9b98-11e1-88cd-0026b936528c','1' at line 1"

我尝试使用bindValue()使用相同的函数,只是将具有直接值的数组放入$sth->execute()函数中,但是我总是收到相同的错误.也许外面的眼睛可以发现我缺少的东西或做错了什么?

I have tried the same function using bindValue() and just putting the array with direct values into the $sth->execute() function but I always receive the same error. Maybe an outside eye can spot something I'm missing or doing wrong?

推荐答案

将字段名称封装在反引号(`)中,desc是保留字.

Encapsulate your field names in backticks (`), desc is a reserved word.

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

这篇关于PHP PDO语法错误或访问冲突:插入时为1064的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆