无重复数的PHP随机数

无重复数的PHP随机数,php,Php,我期待有一个随机数为我的网站工作的订单id号生成。它使用MySQL存储订单id为主键的订单,因此它们无法匹配。订单id放在一个输入字段中,该字段将用于插入数据库,因此我无法使用MySQL生成该编号 我试过$numbers=range(1,20); 洗牌(数字)但只需在输入字段中获取“Array” 现在,我所能做的就是根据您的框架调用这个函数。此函数由CI框架完成,用于检查数据库中是否存在随机数 get_random_number('tbl_order','id'); function get_

我期待有一个随机数为我的网站工作的订单id号生成。它使用MySQL存储订单id为主键的订单,因此它们无法匹配。订单id放在一个输入字段中,该字段将用于插入数据库,因此我无法使用MySQL生成该编号

我试过
$numbers=range(1,20);
洗牌(数字)但只需在输入字段中获取“Array”


现在,我所能做的就是根据您的框架调用这个函数。此函数由CI框架完成,用于检查数据库中是否存在随机数

get_random_number('tbl_order','id');

function get_random_number($table_name,$field_name)
{
    // Create a random id
  $random_unique  =  sprintf('%04X%04X', mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535));

    //$random_unique = random_string('alnum', 6);
    // Make sure the random id isn't already in use
  $CI = get_instance();
  $CI->db->where($field_name, $random_unique);
  $query = $CI->db->get_where($table_name);

  if ($query->num_rows() > 0)
  {
    // If the random id is already in use, get a new number
    $this->get_random_number();
  }
  return $random_unique;
}

要么将主键生成留给数据库(自动递增字段),要么使用低冲突概率的随机值(如UUID)。另请参见。我已编辑以包括我尝试了
$numbers
,但得到的只是“数组”@RobbyCornelissen我需要它生成一个数字,这样它就可以通过URL传输到另一个页面。也可以看到,显然是插件我的答案;P