У меня сложная сортировка времени по этой проблеме 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' или' false "после обновления. Вместо этого вам нужно использовать спецификатор соединения. Замечание: вы не выполняете проверку ошибок после запроса. См. Руководство, чтобы узнать, как это сделать. –
У вас есть ошибка в вашем запросе, измените PASSWORD ('a9eb42e1b3be829ef42972ea9abab334') на \ "PASSWORD ('a9eb42e1b3be829ef42972ea9abab334') \" и снова проверьте –
@mohammadfalahat Добавление цитат вокруг PASSWORD (...) передало бы его как литеральную строку. –