Home  >  Article  >  Backend Development  >  php ADO access数据库 update语句无法引用主键的值

php ADO access数据库 update语句无法引用主键的值

WBOY
WBOYOriginal
2016-06-23 14:01:09875browse

注意 No 为access表里的主键

我想将No=290的记录里的 ID改为11,下面二句执行后无变化
$query = "update sensors set ID=11 where No=290";
$result =$conn->Execute($query); 
-----------------------------------------------
但下面二句执行后是有效果的,能将type=49的记录ID改为11
$query = "update sensors set ID=11 where type=49";
$result =$conn->Execute($query); 
------------------------------------------------

想知道为什么引用主键的值就不行呢?


回复讨论(解决方案)

这样试试:
update sensors set ID=11 where No=290 and type=49

是不是主键重复了~

这样试试:
update sensors set ID=11 where No=290 and type=49

是不是主键重复了~

主键系统自动增加的,是惟一的,不可能有重复值
我下面这句话是OK的,(XXXXXX是具体的需要更新的字段)
update sensors set XXXXXXXX  where ID=15 and type=48 and prop=0


这样试试:
update sensors set ID=11 where No=290 and type=49

是不是主键重复了~

主键系统自动增加的,是惟一的,不可能有重复值
我下面这句话是OK的,(XXXXXX是具体的需要更新的字段)
update sensors set XXXXXXXX  where ID=15 and type=48 and prop=0


select * from sensors where No=290  看看

帮你转到PHP区了,是不是type字段是字符类型的,换成这样试试

 update sensors set ID=11 where type='49'

no 是 access 的保留字(见  http://office.microsoft.com/zh-cn/access-help/HA010030643.aspx)
在选择标识符名称时应避免使用的保留字
如果已经用了,并且不方便修改的话,应进行转义:用中括号括起

$query = "update sensors set ID=11 where [No]=290";

no 是 access 的保留字(见  http://office.microsoft.com/zh-cn/access-help/HA010030643.aspx)
在选择标识符名称时应避免使用的保留字
如果已经用了,并且不方便修改的话,应进行转义:用中括号括起

$query = "update sensors set ID=11 where [No]=290";

测试了一下,确实如楼上所说No是保留字,将它用方括号包起来就能得到正确的结果了,谢谢,结贴给分!~

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn