我正在嘗試使用 Replace Into 在 php 中創(chuàng)建一個用戶計數(shù)腳本,但目前它似乎拋出一個我無法破譯的 MySQL 錯誤。$db->query("REPLACE INTO onlinenow (`time`,`ip`) VALUES ('$timestamp','$ip') WHERE ip = '$ip' ");對我來說看起來是正確的,但是會導致錯誤MySQL 錯誤:您的 SQL 語法有錯誤;檢查與您的 MySQL 服務器版本相對應的手冊,了解在第 1 行 'WHERE ip = 'REDACTED'' 附近使用的正確語法有人知道我哪里出錯了嗎?
1 回答

慕慕森
TA貢獻1856條經(jīng)驗 獲得超17個贊
簡短回答:
REPLACE INTO
沒有WHERE
條款。
長答案:
它沒有一個,因為它不需要一個 - 同一份文檔說:
如果表中的舊行與 PRIMARY KEY 或 UNIQUE 索引的新行具有相同的值,則在插入新行之前刪除舊行
這會自動發(fā)生。在你的情況下,我假設它將是 IP 列,應該對其進行PRIMARY KEY
或UNIQUE
約束。
因此,您可以簡單地從查詢中刪除 WHERE 子句,其余的就可以了。
PS 我強烈建議您使用參數(shù)化查詢和準備好的語句安全地在 PHP 中構(gòu)建查詢,而不是像現(xiàn)在一樣使用簡單的字符串連接。這將保護您免受 SQL 注入攻擊,并大大降低其他意外語法錯誤的風險(例如,由于輸入值中的引號和類似問題)。
- 1 回答
- 0 關(guān)注
- 117 瀏覽
添加回答
舉報
0/150
提交
取消