更新直接在MYSQL中工作但不在PHP中

时间:2016-03-18 21:05:27

标签: php mysql

我在PHP上使用mysqli来运行查询,该值将值与现有值相加,如下所示。为了清晰起见,我简化了查询,通常我使用变量来表示不同的值。显然OpenDBConnection是我自己写的一个函数,在同一个脚本的其他地方完美地运行。

$sql="update TBL_Stock set STOCK_Cost = STOCK_Cost + 9 WHERE PO_ID='PO.16.030128'";
$con = OpenDBConnection();
$con->query($sql);

现在,当我直接在MySQL中执行查询(使用MySQL Workbench)时,它可以很好地工作,9被添加到STOCK_Cost的当前值。但是,在PHP上没有任何反应,并且9未添加到STOCK_Cost

奇怪的是,以下php位可以工作:

$sql="update TBL_Stock set STOCK_Cost = 9 WHERE PO_ID='PO.16.030128'";
$con = OpenDBConnection();
$con->query($sql);

显然,它不会执行我想要的代码,但在最后一个脚本中,STOCK_Cost的值设置为9

所以只需添加将最后一位更改为STOCK_Cost = Stock_Cost + 9 ...它就会停止工作。知道发生了什么事吗?

2 个答案:

答案 0 :(得分:1)

我发现了这个问题......出于安全考虑,我给了用户对表中字段的限制权限......以下是该表的授权:

GRANT SELECT (PO_ID, STOCK_ProductID), UPDATE (STOCK_Cost) ON  etc.

查询的工作当然应该如下。

GRANT SELECT (PO_ID, STOCK_ProductID, STOCK_Cost), UPDATE (STOCK_Cost) ON  etc.

MySQL Workbench上的用户与我在PHP脚本中使用的用户不同,这就是为什么它在那里工作的原因。

愚蠢的我......我为此感到疯狂......感谢所有想要帮助我的人。

答案 1 :(得分:0)

PHP调用是否区分大小写? 您是否正在使用STOCK_Cost并撰写"STOCK_Cost = STOCK_Cost + 9",因为在表架构中声明了列?