php - mysql_affected_rows 在成功查询时返回 False?

标签 php mysql sql

我很难解决这个 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

我知道这意味着我的查询失败了,但每次进入数据库时​​,我都会看到值已更新。

从函数中删除参数似乎可以解决问题。但是,我宁愿将标识符作为函数参数,只是为了确定我指的是什么,以及代码保险。

知道为什么会这样吗?

感谢您的宝贵时间。

最佳答案

http://php.net/mysql_query

Return Values

...

For other type of SQL statements, INSERT, UPDATE, DELETE, DROP, etc, mysql_query() returns TRUE on success or FALSE on error.

和:

int mysql_affected_rows ([ resource $link_identifier = NULL ] )

这意味着 mysql_affected_rows 需要一个 mysql 连接资源作为参数。不是 mysql_query 的结果,如果该结果只是 truefalse,则肯定不是。你可以这样使用它:

$successful = mysql_query('UPDATE ...'); 

if ($successful) {
    echo 'Affected rows: ' . mysql_affected_rows();
} else {
    echo 'Fail: ' . mysql_error();
}

关于php - mysql_affected_rows 在成功查询时返回 False?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11202019/

相关文章:

PHP mysql 文本框值与数据库字段值比较

PHP XPath 结束于

PHP/MySQL 数组帮助需要

mysql - docker run 命令如何转换为 docker compose 文件?

php - Android 从数据库获取数据不起作用(php + json + mysql)

javascript - 日期选择器 javascript 和电子邮件检查 ajax java 脚本错误

mysql - SQL - SELECT * FROM posts WHERE id_user IN SUBQUERY?

php - 在mysql中选择中间元素?

sql - 撤消对存储过程的更改

php - 创建横幅交换算法以旋转广告