我正在发送一个SQL UPDATE查询,而mySQL数据库表现得很奇怪。它返回一个成功的响应,但会影响0行。代码是:
UPDATE place
SET city='Qatar' AND country='Qatar'
WHERE placeid='25'
Response: Successful 0 row(s) affected. ( Query took 0.0003 sec )
数据库中有肯定记录,其中placeid ='25'。如果我执行SELECT * FROM place WHERE placeid ='25'我会返回记录。
有什么想法吗? 谢谢!
编辑:
Table structure:
SQL query: describe place;
Rows: 9
Field Type Null Key Default Extra
title text NO NULL
description text NO NULL
latitude float NO NULL
longitude float NO NULL
image text NO NULL
placeid int(11) NO PRI NULL
country text YES NULL
city text YES NULL
address text YES NULL
答案 0 :(得分:16)
试试这个:
UPDATE place
SET city='Qatar', country='Qatar'
WHERE placeid=25
因为 AND
在您的查询中听起来很奇怪。
答案 1 :(得分:2)
我注意到MySQL是“智能”的,并且不会将记录更新为已存在于数据库中的值。当我从Workbench运行更新语句时,我第一次得到响应(从'a'更新为'b'):
更新t.t set s ='b',其中k> 0 | 1行受影响的行匹配:1已更改:1警告:0
第二次收到回复(从'b'更新为'b'):
更新t.t set s ='b',其中k> 0 | 0行受影响的行匹配:1已更改:0警告:0
幸运行永远不会在事务中被锁定。
答案 2 :(得分:-1)
你确定placeId是varchar但不是数字吗?你试过没有''吗?
UPDATE place SET city='Qatar' AND country='Qatar' WHERE placeid=25