我很难解决这个PHP / MySQL问题。让我告诉你我的数据库,并解释我的情况:
创建表格:
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', 'john@gmail.com', '', '', 'User'
);
更新值:
$affected = mysql_query(UPDATE users SET passWord = PASSWORD('a9eb42e1b3be829ef42972ea9abab334'), changePassword = 'on' WHERE emailAddress1 = 'john@gmail.com', $dbID);
if (mysql_affected_rows($affected)) {
//Never runs
}
上面的UPDATE
查询在我的脚本,phpMyAdmin和MySQL终端中执行得很好。但是,mysql_affected_rows($affected)
总是给了我这个错误:
Warning: mysql_affected_rows() expects parameter 1 to be resource, boolean given
我知道这意味着我的查询失败,但每次进入数据库时,我都会看到值已更新。
从功能中删除参数似乎可以清除。但是,我宁愿将标识符作为函数参数,只是为了确定我所指的是什么,以及代码保险。
知道为什么会这样做吗?
感谢您的时间。
答案 0 :(得分:4)
返回值
...
对于其他类型的SQL语句,
INSERT
,UPDATE
,DELETE
,DROP
等,mysql_query()
会在成功时返回TRUE
或错误FALSE
。
和
int mysql_affected_rows ([ resource $link_identifier = NULL ] )
这意味着mysql_affected_rows
想要一个mysql连接资源作为参数。不是mysql_query
的结果,如果该结果仅为true
或false
,则肯定不会。你这样使用它:
$successful = mysql_query('UPDATE ...');
if ($successful) {
echo 'Affected rows: ' . mysql_affected_rows();
} else {
echo 'Fail: ' . mysql_error();
}
答案 1 :(得分:1)
变化:
$affected = mysql_query(UPDATE users SET passWord = PASSWORD('a9eb42e1b3be829ef42972ea9abab334'), changePassword = 'on' WHERE emailAddress1 LIKE 'john@gmail.com', $dbID);
并执行