我正在尝试使用 Replace Into 在 php 中创建一个用户计数脚本,但目前它似乎抛出一个我无法破译的 MySQL 错误。$db->query("REPLACE INTO onlinenow (`time`,`ip`) VALUES ('$timestamp','$ip') WHERE ip = '$ip' ");对我来说看起来是正确的,但是会导致错误MySQL 错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 1 行 'WHERE ip = 'REDACTED'' 附近使用的正确语法有人知道我哪里出错了吗?
1 回答
慕慕森
TA贡献1856条经验 获得超17个赞
简短回答:
REPLACE INTO
没有WHERE
条款。
长答案:
它没有一个,因为它不需要一个 - 同一份文档说:
如果表中的旧行与 PRIMARY KEY 或 UNIQUE 索引的新行具有相同的值,则在插入新行之前删除旧行
这会自动发生。在你的情况下,我假设它将是 IP 列,应该对其进行PRIMARY KEY
或UNIQUE
约束。
因此,您可以简单地从查询中删除 WHERE 子句,其余的就可以了。
PS 我强烈建议您使用参数化查询和准备好的语句安全地在 PHP 中构建查询,而不是像现在一样使用简单的字符串连接。这将保护您免受 SQL 注入攻击,并大大降低其他意外语法错误的风险(例如,由于输入值中的引号和类似问题)。
- 1 回答
- 0 关注
- 87 浏览
添加回答
举报
0/150
提交
取消