防止ID重复

时间:2011-11-28 17:51:56

标签: php mysql duplication

我在下面使用这个。它会阻止ID重复吗?

代码:

$new_generating_id =在流程页面上,每次处理流程页面时都会生成一个新ID;

  $sql = "select `Message_id` from `queries_sent` 
  where message_id='$new_generating_id'";
  $query = mysql_query($sql) or die ("Error: ".mysql_error());

  while ($row = mysql_fetch_array($query)){

$storedid = $row['Message_id'];


  }
  mysql_free_result($query);

  if ( $new_generating_id == $storedid ) {
echo("An error occured.");
    die('');
   } else {
echo('');
   }

为了解决它是否有效,我使用已知变量对其进行了测试。

我将$new_generating_id更改为存在的id,当db拉出它时,它给出了错误消息。你们觉得怎么样?

2 个答案:

答案 0 :(得分:1)

尝试使用时间戳值进行识别。它对于每个提交的交易都是唯一的。最简单的形式是:

$id='myid'.time();

这里我使用了字符串 myid 并将其与时间戳值(来自time()函数)连接起来。现在将此值存储在数据库中并对其执行操作。

答案 1 :(得分:0)

如果要在Message_id字段中插入一些唯一字符串,请首先在表中将Message_id标记为唯一。然后你可以使用类似这样的代码在表中插入新的ID:

do {
    $uniqueId = md5(uniqid(mt_rand(), true));
    mysql_query("INSERT INTO queries_sent (Message_id) VALUES ('$uniqueId')");
} while (mysql_errno() == 1062);