为了账号安全,请及时绑定邮箱和手机立即绑定

替换为导致“WHERE”处出现 MySQL 语法错误

替换为导致“WHERE”处出现 MySQL 语法错误

PHP
喵喵时光机 2023-07-08 17:43:12
我正在尝试使用 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 KEYUNIQUE约束。

因此,您可以简单地从查询中删除 WHERE 子句,其余的就可以了。


PS 我强烈建议您使用参数化查询和准备好的语句安全地在 PHP 中构建查询,而不是像现在一样使用简单的字符串连接。这将保护您免受 SQL 注入攻击,并大大降低其他意外语法错误的风险(例如,由于输入值中的引号和类似问题)。


查看完整回答
反对 回复 2023-07-08
  • 1 回答
  • 0 关注
  • 87 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信