我正在尝试编写一个SQL命令来更新数据库表中的一些信息,我正在使用基本的PHP变量将这些信息添加到正确的列中。
我写了很多类似的命令没有任何问题,但对于我的生活,我无法弄清楚为什么这会产生错误信息。
这是查询..
$sql = "UPDATE nexnum SET regexp = '{$regexp2}', regstatus = '{$regstatus}', expflag = '{$expflag}' WHERE duns = {$duns}";
我试过这个有和没有变量的引号,我试过把它分成三个单独的命令/查询。这些变量都可以在我的PHP代码中正常工作。这是语法问题吗?
答案 0 :(得分:3)
在看到评论主题后,看到其他答案是Stealth编辑,我必须诚实地说我重新打开了这个问题并决定发布我的答案。
取自OP's comment:
您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以便使用正确的语法,然后使用&#39; regexp =&#39; 2017-12-08&#39;,regstatus =&#39; ACTIVE&#39; ... < / p>
MySQL告诉您错误的开始位置:near 'regexp
REGEXP
是MySQL保留字:
注意&#34; R&#34;围绕它=&gt; REGEXP (R)
,代表&#34; 保留&#34;。
要么将其重命名为其他内容,要么使用它周围的刻度线:
UPDATE nexnum SET `regexp`
&#34;这个问题怎么重复?我在此查询中没有使用任何保留字。 - 约翰C.&#34;
A:这是一个保留字,是的。
&#34;我已尝试使用和不包含变量的引号&#34;
这并不是导致你的代码一直失败的原因,而是保留字。
如果仍然没有让您更新数据库,则可能还有其他未知的问题。
使用错误报告:
使用您使用的MySQL API的错误处理程序(再次)检查查询错误(也是未知的)。
您的代码也可以使用SQL注入,使用预准备语句:
<强>供参考:强>
因此,您选择的命名惯例使您失望。