【发布时间】:2010-12-07 09:46:21
【问题描述】:
我知道,这可能是我的一个愚蠢的错误。
我试图为所有帖子标题添加后缀,并为我博客中的所有帖子添加特定标签(博客是用于学习目的的自定义编码项目)。一旦这不起作用,我尝试使用 phpMyAdmin 手动更新它,但没有成功。
那么,为什么这不起作用:
UPDATE
posts
SET
title = 'myNewTitle',
tags = 'myStupidTag'
WHERE
id = 1
我得到的只是来自 mysql 的 OK 状态,但有 0 行受到影响。但是,如果我在 SELECT 的 WHERE 子句中使用相同的 ID,我会得到发布数据就好了。
我的查询有问题吗?
这是表格:
CREATE TABLE IF NOT EXISTS `posts` (
`ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(512) DEFAULT NULL,
`link` varchar(512) DEFAULT NULL,
`rating` tinyint(3) unsigned DEFAULT NULL,
`html` text,
`tags` varchar(512) DEFAULT NULL,
`description` varchar(512) DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=80 ;
【问题讨论】:
-
也向我们展示
UPDATE ... SELECT -
如果更新后有 0 行受影响,则表示没有数据需要更新,即标题和标签值已设置为 myNewTitle 和 myStupidTag
-
继之前的 cmets 之后,您是否尝试过在 UPDATE 前后选择 ID 为 1 的行?正如 Mchl 所说,如果 UPDATE 语法正确,则 UPDATE 将返回 OK,如果没有更改任何行,则返回 0 行。也许您可以尝试为您的列使用不同的值...
-
好吧……这更奇怪了……我又试了一次,它成功了。但是,我仍然收到 msg: 0 row(s) 影响。 (查询耗时 0.0015 秒),我在 db 中看到该行已实际更改。 UPDATE 查询是否不计算修改的行数?