我的mysql查询出错,尽管看起来很好
我有这个疑问我的mysql查询出错,尽管看起来很好,mysql,Mysql,我有这个疑问 mysql_query("INSERT into reviews VALUES(0,$pid,$id,'new')") or die(mysql_error()); 它似乎给出了一个错误 “您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解第1行“new”(新)附近要使用的正确语法” 虽然看起来很好,但数据库表结构是: `id` int(11) NOT NULL AUTO_INCREMENT, `proposalid` int(11) NOT NU
mysql_query("INSERT into reviews VALUES(0,$pid,$id,'new')") or die(mysql_error());
它似乎给出了一个错误
“您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解第1行“new”(新)附近要使用的正确语法”
虽然看起来很好,但数据库表结构是:
`id` int(11) NOT NULL AUTO_INCREMENT,
`proposalid` int(11) NOT NULL,
`reviewerid` int(11) NOT NULL,
`status` enum('approved','declined','noresponse','new') NOT NULL DEFAULT 'new',
PRIMARY KEY (`id`);
似乎没有什么问题,但为什么会出现错误?您是否尝试过对自动递增使用
默认值而不是0,或者显式声明列插入到审阅(proposalid、reviewerid、status)值($pid、$id、'new'))
?值$id
可能导致错误的引号引发错误
比如说,
$pid = "6";
$id = "5'";
将导致:
INSERT into reviews VALUES(0,6,5','new')
制作INSERT
语句时,还应使用列列表。由于new
是status
列的默认值,因此可以将其全部排除(以及排除自动递增主键):
如果$id
和$pid
是用户输入,则需要使用准备好的语句。此外,您正在使用的API(mysql\uUcode>)已被弃用PDO
或mysqli\uucode>是替换项,它们都允许准备好的语句对输入进行清理。由于ENUMstatus
的默认值设置为“new”,您是否可以尝试插入,例如:
mysql_query("INSERT into reviews (`proposalid`, `reviewrid`) VALUES($pid, $id);") or die(mysql_error());
在此之后,可能会更多地讨论错误。$pid和$id解决了什么问题?问题可能不在new上,但$id可能为null?它在函数调用的小提琴中工作良好。公共函数assign_reviewer($pid,$id)除此之外,您知道只要有一行,这个查询就会失败,对吗?您应该定义字段和值插入到评审(proposalid,reviewerid)值($pid,$id)
-关闭自动增量,不必担心状态,因为刚才的默认值是newtried。现在,它在第1行给出了错误“…正确语法以使用near”),“当前$pid
和$id
的值是多少?我倾向于同意上面的答案,即其中一个可能有错误的引号在其中徘徊,破坏了格式。添加反勾号和单引号似乎成功了,以下是有效的查询。谢谢(“插入到评论(proposalid
,reviewerid
)值(“$id”,“$pid”))@JamieAnacleto正如您所知,这不是正确的方法。$pid
和$id`需要在此处转义。
mysql_query("INSERT into reviews (`proposalid`, `reviewrid`) VALUES($pid, $id);") or die(mysql_error());