我在整理这个PHP/MySQL问题时遇到困难。让我告诉你我的数据库,并说明我的情况:mysql_affected_rows在成功查询时返回False?
创建表:
CREATE TABLE IF NOT EXISTS `users` (
`id` int(50) NOT NULL AUTO_INCREMENT,
`active` varchar(20) NOT NULL,
`activation` varchar(15) NOT NULL,
`firstName` longtext NOT NULL,
`lastName` longtext NOT NULL,
`passWord` longtext NOT NULL,
`changePassword` text NOT NULL,
`emailAddress1` longtext NOT NULL,
`emailAddress2` longtext NOT NULL,
`emailAddress3` longtext NOT NULL,
`role` longtext NOT NULL,
PRIMARY KEY (`id`),
FULLTEXT KEY `name` (`firstName`,`lastName`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
插入值:
INSERT INTO `users` (
`id` ,
`active` ,
`activation` ,
`firstName` ,
`lastName` ,
`passWord` ,
`changePassword` ,
`emailAddress1` ,
`emailAddress2` ,
`emailAddress3` ,
`role`
) VALUES (
NULL, '1000000000', 'abcdefghijklmno', 'John', 'Smith', '*24D7FB97963C40FE5C56A6672F9560FC8B681508', 'on', '[email protected]', '', '', 'User'
);
更新的值:
$affected = mysql_query(UPDATE users SET passWord = PASSWORD('a9eb42e1b3be829ef42972ea9abab334'), changePassword = 'on' WHERE emailAddress1 = '[email protected]', $dbID);
if (mysql_affected_rows($affected)) {
//Never runs
}
以上UPDATE
q uery在我的脚本,phpMyAdmin和MySQL终端中执行得很好。然而,mysql_affected_rows($affected)
总是给了我这个错误:
Warning: mysql_affected_rows() expects parameter 1 to be resource, boolean given
我知道这意味着我的查询失败,但我每次进入数据库的时候,我看到值已被更新。
从函数中删除参数似乎清除了事情。但是,我宁愿将标识符作为函数参数,以确保我所指的是代码保险。
任何想法,为什么这可能会这样做?
谢谢你的时间。
见说明书上'的mysql_query()':这是由设计,它将返回TRUE;或'在更新后错误。您需要改为使用连接说明符。附注:您在查询后没有进行任何错误检查。看到手册,看看如何做到这一点。 –
你在查询时发生错误,请将PASSWORD('a9eb42e1b3be829ef42972ea9abab334')更改为\“PASSWORD('a9eb42e1b3be829ef42972ea9abab334')\”并再次检查 –
@mohammadfalahat在PASSWORD(...)周围添加引号会将其作为文字字符串传递。 –