Mysql SELECT查找重复“除了”当前的重复项

时间:2013-01-31 16:27:47

标签: php mysql

我现在有一些代码可以查看是否已使用某个密钥。唯一的问题是,如果正在修改条目,它现在会找到它自己。什么是寻找重复“除了”当前重复的好方法?我有一个名为“id”的唯一ID。我有一个人的钥匙列表。每把钥匙仅限一人使用。有时当办公室的人从我们拥有的钥匙库中取出钥匙时。然后忘记从我们拥有的密钥库中删除密钥。然后,当下一个人拿一把钥匙时,他们拿走最后一个用过的钥匙。我们最终将游戏密钥出售给不同的人。这就是为什么我需要检查viprek中的重复项,但是如果他们正在用其中的那个键更改条目,则不会触发“此键已在使用中”屏幕。

的init.php

<?php
$con = mysql_connect(localhost, root, passwordexmaple);
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("arkamanc_vipre", $con);
?>

modify.php

http://pastebin.com/5shCfKWu

Edit.php

http://pastebin.com/CVjaS8Lh

1 个答案:

答案 0 :(得分:0)

SELECT c2.id FROM client AS c1, client AS c2
  WHERE c1.viprek = c2.viprek
  AND c1.viprek != :viprek
  AND c1.id < c2.id

上述查询将返回表id的所有条目的client,这些条目与viprek列上的其他条目重复,但$_POST列中的值保留的条目除外1}}。你应该只获得较新的重复项(id rank-wise)。

这是您应该做的更改,以便在脚本中获得预期的行为:

$query = "SELECT * FROM client AS c1, client AS c2 WHERE c1.viprek = c2.viprek AND c1.viprek!=".mysql_real_escape_string($_POST[viprek])." AND c1.id < c2.id";

如果你想要的是包含viprek列和id特定值的特定值的条目,那么这就是查询。

SELECT id FROM client
   WHERE id != :id 
   AND viprek = :viprek

您只需修改$query变量即可包含此查询,如上所示。

但是,强烈建议您使用PDO执行所有数据库查询。我建议你学习如何做或聘请某人来照顾它。这是tutorial,您可以转换到PDO。

我不确定这是不是你想要的。