2015-02-10 78 views
0

我正在创建一个小插件,它为每个帖子提供了一个序列号,每个序列号必须是唯一的,我不知道如何检查生成的序列号已经在SQL数据库中。如何检查一个字符串是否已经在SQL数据库中

这是密钥生成代码:

function generateRandomString($length = 5) { 
    $characters = '123456789'; 
    $charactersLength = strlen($characters); 
    $randomString = ''; 
    for ($i = 0; $i < $length; $i++) { 
     $randomString .= $characters[rand(0, $charactersLength - 1)]; 
    } 
    return '#'.$randomString; 
$new_SN = generateRandomString(); } 

如何检查的$new_SN值已经存储在相关的SQL表单元格 - 在我的情况下,该表是wp_postmeta,meta_key串行和meta_value是,由函数填充的值

+4

在表上设置一个“唯一”约束,并在插入时查找主键违规错误。 – developerwjk 2015-02-10 22:00:54

+0

只需使用自动增量http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html – sqluser 2015-02-11 00:02:13

回答

0

为什么你要生成一个唯一的数字?有很多专门为此设计的工具 - 因为你提到过MySQL,它支持自动递增整数,PHP支持uuid(uniqid())和几个哈希函数(如果你不想使用连续数字)。正如developerwjk所说 - 如果您的生成函数完全有效,那么在保存数据之前,您不应该打扰检查 - 只需添加唯一索引并在插入失败时重置陷阱。

相关问题