我在下面使用这个。它会阻止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拉出它时,它给出了错误消息。你们觉得怎么样?
答案 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);