2009-10-29 49 views
0

我得到語法錯誤,用下面的語句錯誤與使用MySQL的語法REPLACE INTO

REPLACE INTO users (screenname, token, secret) VALUES('$screenname', '$token', '$secret') WHERE 'screenname' = $screenname 

該表具有名爲id的主鍵,自動遞增。

+0

我覺得可能是一個UPDATE語句 – 2009-10-29 14:36:34

回答

1

放據我所知,更換有沒有WHERE,你可能要更新,而不是

+0

如果存在,是否有更新?是否插入statemet? – mrpatg 2009-10-29 09:39:06

+1

不需要UPDATE IF EXISTS,運行查詢只會更新匹配的記錄。如果沒有匹配,則不會更新。你可以通過將你需要的數據複製到臨時表中來實現這一點:(使用引號之間的所有內容)「 CREATE TABLE test_table SELECT fields_you_need FROM table_name WHERE condition_you_need LIMIT x_amount」這只是創建一些測試數據的粗略方法放到一個表中,這樣您就可以在測試環境中運行查詢,並且只保留生產/實時表數據。乾杯 – 2009-10-29 14:40:44

0

您需要擁有screenname的UNIQUE索引。

而且你的報價是錯誤的WHERE子句中:

WHERE screenname = '$screenname' 

我將承擔所有的變量已通過mysql_real_escape_string():)

+0

如果我的id字段是主鍵,怎麼辦我將screenname字段設置爲唯一?我使用phpmyadmin,並設置此選項是無效的。 – mrpatg 2009-10-29 09:11:26

+0

錯誤 SQL查詢: ALTER TABLE'users' DROP PRIMARY KEY, ADD PRIMARY KEY('screenname') MySQL表示:文檔 #1170 - BLOB中的密鑰規範使用沒有/ TEXT列 '屏幕名'密鑰長度 – mrpatg 2009-10-29 09:13:22

0

嘗試刪除在

值的值的變量,單引號(「$屏幕名」,「$令牌」 , '$祕密')

如:

值VALUES($屏幕名,$令牌,$密碼)