Php 仅当值不为';不存在
所以我有上面的表,我只想插入一个玩家代号,如果它还不存在的话。我怎么能这么做Php 仅当值不为';不存在,php,mysql,Php,Mysql,所以我有上面的表,我只想插入一个玩家代号,如果它还不存在的话。我怎么能这么做 +----+----------+-----------+ | id | gamertag | timestamp | +----+----------+-----------+ 。那么只有第一次插入才有效。如果存在相同的玩家代号,则插入将失败。您可以尝试插入忽略,检查mysql开发页面中有关此关键字的信息:) 编辑-根据以下评论:是的,您需要将gamertag列作为唯一索引。 而那些投票赞成的人可能会认为这是“理解
+----+----------+-----------+
| id | gamertag | timestamp |
+----+----------+-----------+
。那么只有第一次插入才有效。如果存在相同的玩家代号,则插入将失败。您可以尝试插入忽略,检查mysql开发页面中有关此关键字的信息:) 编辑-根据以下评论:是的,您需要将gamertag列作为唯一索引。
而那些投票赞成的人可能会认为这是“理解的” 编辑-更新答案最终确定答案:
$gamertag=“l RaH l”
mysql_查询(“将IGNORE插入gamertag(gamertag)值(“'.$gamertag.”)中)代码>
别忘了唯一索引,因为MySQL无法使用gamertags列插入或更新(至少不可用)
看看MySQL的这些解决方法:您应该同时做两件事:在gamertag列上和使用insert ignore
唯一索引可防止添加重复的行
insert ignore可防止mysql在未添加重复行时发出警告。您可以使用unique,如@sarwar answer,或使用[insert…ON duplicate KEY UPDATE][1],因此,如果密钥存在,则只更新时间戳[1]:即假设约束首先存在,或者你不能使用这样的查询。MySQL已经有了INSERT。。。从7年前的版本4.1开始进行重复密钥更新。INSERT IGNORE
本身并不能阻止INSERT
创建重复行,他要求不要这样做。这并不能回答问题。那些投了赞成票的人显然不知道他们在做什么,不应该参与这个问题。@dan OP没有提到任何关于停止插入的内容。是的,他提到了,这是他的全部问题。告诉他每次只运行一个INSERT IGNORE查询只会导致他要求不做的事情。@dan“只想在玩家代号不存在的情况下插入它。”INSERT IGNORE
会做到这一点(再次假设存在唯一索引)。在这个问题中,我找不到插入失败并出现错误?@andrewferra:您的原始代码应该是这样的:$gamertag=“l RaH l”;mysql_查询(“将忽略插入到
gamertags(
gamertag)值(“$gamertag.”)中)代码>别忘了为玩家标记唯一索引column@Dan谢谢以及添加链接。
$gamertag = "l RaH l";
mysql_query("INSERT INTO `gamertags`(`gamertag`)VALUES ('".$gamertag."')");