我在整理這個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(...)周圍添加引號會將其作爲文字字符串傳遞。 –