我在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
...它就会停止工作。知道发生了什么事吗?
答案 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"
,因为在表架构中声明了列?