2011-11-28 90 views
0

我在下面使用它。它会防止身份证复制吗?防止身份证复制

代码:

$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拉它时它给出了错误信息。你们有什么感想?

+9

你有没有考虑过使用'auto_increment'字段? –

+0

你想达到什么目的? – Marcus

+1

MySQL对于应该用作ID的键具有'unique'和'auto_increment'属性。你不应该在PHP中这样做。 – Blender

回答

1

尝试使用时间戳值进行标识。每笔交易都是唯一的。最简单的形式是:

$id='myid'.time(); 

在这里,我使用了字符串身份识别码并与时间戳值(从time()功能)连接在一起的。现在将该值存储在数据库中并对其执行操作。

+0

如何来time()是'独特的为每笔交易提交'?除非你100%确定你没有超过1tps。 – Mchl

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); 
相关问题