SQL命令语法错误

时间:2017-01-07 22:54:39

标签: php mysql sql

我正在尝试编写一个SQL命令来更新数据库表中的一些信息,我正在使用基本的PHP变量将这些信息添加到正确的列中。

我写了很多类似的命令没有任何问题,但对于我的生活,我无法弄清楚为什么这会产生错误信息。

这是查询..

$sql = "UPDATE nexnum SET regexp = '{$regexp2}', regstatus = '{$regstatus}', expflag = '{$expflag}' WHERE duns = {$duns}";

我试过这个有和没有变量的引号,我试过把它分成三个单独的命令/查询。这些变量都可以在我的PHP代码中正常工作。这是语法问题吗?

1 个答案:

答案 0 :(得分:3)

在看到评论主题后,看到其他答案是Stealth编辑,我必须诚实地说我重新打开了这个问题并决定发布我的答案。

取自OP's comment

  

您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以便使用正确的语法,然后使用&#39; regexp =&#39; 2017-12-08&#39;,regstatus =&#39; ACTIVE&#39; ... < / p>

注意&#34; R&#34;围绕它=&gt; REGEXP (R),代表&#34; 保留&#34;。

要么将其重命名为其他内容,要么使用它周围的刻度线:

UPDATE nexnum SET `regexp`
  

&#34;这个问题怎么重复?我在此查询中没有使用任何保留字。 - 约翰C.&#34;

A:这是一个保留字,是的。

  

&#34;我已尝试使用和不包含变量的引号&#34;

这并不是导致你的代码一直失败的原因,而是保留字。

如果仍然没有让您更新数据库,则可能还有其他未知的问题。

使用错误报告:

使用您使用的MySQL API的错误处理程序(再次)检查查询错误(也是未知的)。

您的代码也可以使用SQL注入,使用预准备语句:

<强>供参考:

因此,您选择的命名惯例使您失望。