Обработка ошибки mysql 1062

Zavus

Новичок
Подскажите.
Делаю функционал 'Запомнить меня' (как тут во втором ответе https://stackoverflow.com/questions/3128985/php-login-system-remember-me-persistent-cookie). Нужно сгенерировать уникальное значение (селектор)
и записать его в базу данных. Если такое значение уже в базе есть, то сгенерировать новое и снова попытаться записать, и продолжать попытку, пока не подберется и не запишется подходящее значение. То есть работа с ошибкой 1062 MySQL.

Почитал в мануале про http://php.net/manual/ru/function.mysql-errno.php , и там в последней заметке один человек пишет:
Код:
Function for creating unique md5 keys in a database. If there are duplets, then a new md5-key will be generated. For your use:

  function users_md5create($id){
    global $mysql_link;

    while ($done==0) {
      $md5key = md5(time().($id/2).$loop).md5(time().$id.$loop);
      $query = "INSERT INTO users_md5create SET md5key='$md5key', fkey='$id', created=UNIX_TIMESTAMP() ";
      $mysql_result = mysql_query($query, $mysql_link);
      if(mysql_errno($mysql_link)!=1062) $done=1;
      $loop++;
    }

    return($md5key);
  }
если не считать всяких глобалов и и устаревшего mysql вместо mysqli, то это вроде то, что мне нужно.
Но эту заметку заминусовали. Так вот, хотелось бы узнать ваше мнение, - заминусовали только из-за уже сказанного, или потому, что нельзя использовать такой подход при обработке 1062?

И если нельзя, то какой тогда использовать подход?
 

Vano

Новичок
А не проще ли будет сночала проверить существование такого ключа, чем обрабатьівать ошибку?
 

WMix

герр M:)ller
Партнер клуба
каждая строка грязно выглядит и создание ключа и не экранированный запрос, и проверка на ошибку... при этом великой идеи я там не увидел
 
Сверху