2011-05-31 78 views
5
 $result53543534 = mysql_query("UPDATE users SET credit=credit+1 WHERE email= '{$battle_get['username']}'") 
or die(mysql_error()); 

但不更新。檢查$battle_get['username']和用戶名在那裏。 我沒有得到任何錯誤或任何東西只是不添加...mysql查詢不工作沒有錯誤任何東西

任何幫助將是非常好的,在此先感謝

+3

您在電子郵件字段中使用用戶名?有可能SQL沒有找到具有該「email」地址的行。 – 2011-05-31 17:04:22

+0

電子郵件應該是用戶名,對不對?你有沒有檢查它實際上匹配的東西? – 2011-05-31 17:04:42

+0

PHP在語句結尾處是否需要分號 - 'UPDATE blah de blah WHERE email ='thedata';' – 2011-05-31 17:05:19

回答

0

嘗試測試

$email = $battle_get['username']; 
UPDATE users SET credit=credit+1 WHERE email= '$email' 
+0

還沒有沒有上漲...... – nick 2011-05-31 17:15:36

+0

PHP沒有LINQ – David 2011-05-31 17:17:54

+0

PHP沒有LINQ? – nick 2011-05-31 17:28:22

0

你忘了提交查詢的數據庫,嘗試交易

mysql_query("START TRANSACTION"); 
mysql_query("UPDATE users SET credit=credit+1 WHERE email= '{$battle_get['username']}'"); 
mysql_query("COMMIT"); 
+0

位於頁面的頂部。我使用\t include_once('config.php');在頂部的其他每個頁面上的其他SQL腳本工作,所以它正在連接... – nick 2011-05-31 17:40:02

+0

也許你的mysql設置將autocommit設置爲0,將其設置爲1 – brian 2011-05-31 17:43:19

+0

autocommit?我是doind在其他頁面上選擇並插入我的網站上...只是更新不起作用 – nick 2011-05-31 17:45:02

3

看看從mysql_affected_rows()結果是:

if (! $result53543534 = mysql_query("UPDATE users SET credit=credit+1 WHERE email= '{$battle_get['username']}'")) { 
    die(mysql_error()); 
} else { 
    echo "Number of rows affected: " . mysql_affected_rows() . "<br>"; 
} 

我可能沒有完全正確的語法,但我希望你明白。如果結果爲0,則不會指定WHERE語法,因此它實際上是指任何行。

如果結果大於0,那麼如果您認爲它不影響任何行,則會誤認爲。它可能不會影響您認爲應該的行,但這是另一個問題。

另外,echo你的sql語句,所以你可以真正看到它在做什麼。

+0

另外,請將該回顯的sql語句並在命令行客戶端中運行,或者PHPMyAdmin更好地瞭解發生了什麼。 – user151841 2011-05-31 17:47:26

+0

使用該代碼獲取白頁 – nick 2011-05-31 17:55:26

+0

我認爲我修復了語法錯誤,請再試一次。如果沒有,你可以隨時編寫你自己的代碼,調用'mysql_affected_rows()':) – user151841 2011-05-31 18:06:40

0

我建議將代碼更改爲如下,它將允許您檢查sql查詢。嘗試測試sql查詢來查看它是否運行。你可能也想在你的mysql控制檯上運行DESCRIBE用戶來查看你得到的信息。

$sql = "UPDATE users SET credit=credit+1 WHERE email= '{$battle_get['username']}'" 
echo $sql; 
if (! $result53543534 = mysql_query($sql)) { 
    die(mysql_error()); 
} else { 
    echo "Number of rows affected: " . mysql_affected_rows() . "<br>"; 
} 
0

在您使用的連接中爲用戶授予UPDATE權限。僅僅因爲用戶能夠進行SELECT和INSERT,並不意味着他們也可以自動更新,您需要明確授予他們UPDATE的權限。而且mysql_error()也不會顯示任何錯誤,因爲你的SQL語句是正確的,因此不會顯示錯誤。