PDO执行INSERT语句报SQLSTATE[42000]语法错误1064问题求助
问题修复方案
核心错误原因
你的INSERT SQL语句中,字段列表错误使用了单引号包裹字段名,MariaDB/MySQL语法规定:
- 单引号
'仅用于包裹字符串类型的数值 - 字段名、表名如果需要包裹,只能使用反引号
`(键盘ESC键下方的按键),也可以不包裹(只要字段名不是SQL保留关键字)
修正代码
找到userPDO.php中的SQL定义行,替换为以下内容即可:
// 写法1:字段名不加引号(推荐,你的字段名都不是关键字) $pdoQuery = "INSERT INTO usersprofile (firstname, lastname, birthdate, gender, email, phone, street, housenumber, barangay, city, roles) VALUES (:firstname,:lastname,:birthdate,:gender,:email,:phone,:street,:housenumber,:barangay,:city,:roles)"; // 写法2:字段名用反引号包裹(如果字段名是关键字必须用这种) $pdoQuery = "INSERT INTO usersprofile (`firstname`, `lastname`, `birthdate`,`gender`,`email`,`phone`,`street`,`housenumber`,`barangay`,`city`,`roles`) VALUES (:firstname,:lastname,:birthdate,:gender,:email,:phone,:street,:housenumber,:barangay,:city,:roles)";
其他注意事项
你代码中接收了username和password两个POST参数,但INSERT语句中没有包含这两个字段,如果你数据表usersprofile中这两个字段设置为非空无默认值,修复语法错误后执行插入仍会报错,需要根据你的业务需求决定是否把这两个字段加入INSERT的字段和值列表中。
内容的提问来源于stack exchange,提问作者woofMaranon
相关产品推荐
相关产品推荐

