Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql\u受影响的\u行在成功查询时返回False?_Php_Mysql_Sql - Fatal编程技术网

Php mysql\u受影响的\u行在成功查询时返回False?

Php mysql\u受影响的\u行在成功查询时返回False?,php,mysql,sql,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

我很难对这个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\u受影响的行($impacted)
总是给我这个错误:

Warning: mysql_affected_rows() expects parameter 1 to be resource, boolean given
我知道这意味着我的查询失败,但每次我进入数据库时,我都会看到这些值已经更新

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

知道为什么会这样吗

谢谢你抽出时间

返回值

对于其他类型的SQL语句,
INSERT
UPDATE
DELETE
DROP
,等等,
mysql\u query()
在成功时返回
TRUE
,在出错时返回
FALSE

以及:

int mysql\u受影响的行([resource$link\u identifier=NULL])

这意味着
mysql\u受影响的行
需要一个mysql连接资源作为参数。不是
mysql\u查询的结果
,如果该结果仅为
true
false
,则肯定不是。您可以这样使用它:

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

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

返回值

对于其他类型的SQL语句,
INSERT
UPDATE
DELETE
DROP
,等等,
mysql\u query()
在成功时返回
TRUE
,在出错时返回
FALSE

以及:

int mysql\u受影响的行([resource$link\u identifier=NULL])

这意味着
mysql\u受影响的行
需要一个mysql连接资源作为参数。不是
mysql\u查询的结果
,如果该结果仅为
true
false
,则肯定不是。您可以这样使用它:

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

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

$affected = mysql_query(UPDATE users SET passWord = PASSWORD('a9eb42e1b3be829ef42972ea9abab334'), changePassword = 'on' WHERE emailAddress1 LIKE 'john@gmail.com', $dbID);
并执行

更改:

$affected = mysql_query(UPDATE users SET passWord = PASSWORD('a9eb42e1b3be829ef42972ea9abab334'), changePassword = 'on' WHERE emailAddress1 LIKE 'john@gmail.com', $dbID);

然后执行

请参阅
mysql\u query()
上的手册:根据设计,它将在更新后返回
true
false
。您需要改用连接说明符。旁注:在查询之后,您没有进行任何错误检查。请参阅手册以了解如何执行此操作。如果查询中有错误,请将密码('A9EB42E1B3BE829EF42972EA9ABA334')更改为\“密码('A9EB42E1B3BE829EF42972EA9ABA334')\”并进行检查again@mohammadfalahat在密码(…)周围加引号会将其作为文本字符串传递。@Pekka我在实际脚本中检查时出错,我想您对mysql\u受影响的\u行的参数是错误的,它需要一个可选的db连接,而不是查询结果?表示它在更新时返回布尔值,而不是conn_标识符。尝试将$impact更改为$dbID吗?请参阅
mysql\u query()
上的手册:这是经过设计的,更新后它将返回
true
false
。您需要改用连接说明符。旁注:在查询之后,您没有进行任何错误检查。请参阅手册以了解如何执行此操作。如果查询中有错误,请将密码('A9EB42E1B3BE829EF42972EA9ABA334')更改为\“密码('A9EB42E1B3BE829EF42972EA9ABA334')\”并进行检查again@mohammadfalahat在密码(…)周围加引号会将其作为文本字符串传递。@Pekka我在实际脚本中检查时出错,我想您对mysql\u受影响的\u行的参数是错误的,它需要一个可选的db连接,而不是查询结果?表示它在更新时返回布尔值,而不是conn_标识符。尝试将$Infected更改为$dbID?您还必须在mysql\u Infected\u行中作为参数发送db资源链接,而不是查询。因此,您必须在mysql\u Infected\u行中作为参数发送db资源链接,而不是查询