|
|
|
| Всем привет. Нужно сгенерировать число и проверить его на существование в базе, если такое существует, то перегенерировать.
$num = rand(1000000000,9999999999);
$check = "
SELECT `pi_programs_buy_id`
FROM `pi_programs_buy`
WHERE `pi_programs_buy_num` = '".$num."'
";
$check = select_query($check);
if($check['count'] != 0){
$num = rand(1000000000,9999999999);
}
|
Такой вариант не идеален, т.к. Идет единичная проверка с перегенерацией. Нужно или в цикле, ума не приложу. Как собственно сделать? | |
|
|
|
|
|
|
|
для: TetRiska
(04.07.2012 в 21:04)
| | Это задача из разряда головоломок?
В смысле не важно зачем, но сделать надо?
Или у нее есть какое-то практическое применение?
Может возможен другой подход?
В такой формулировке выглядит, как минимум, не логично!
_____________________
И какова вероятность попадания в существующее?
Может просто сгенерировать 10 чисел, записать их в IN() и выбрать любое свободное? | |
|
|
|
|
|
|
|
для: Sfinks
(04.07.2012 в 23:03)
| | pi_programs_buy_num - это поле содержит номера заказов, оно не автоинкрементное и не будет им, сюда записывать нужно не повторяющиеся значения, поэтому я таким способом делаю сверку, прежде чем записать, по другому пока не знаю как | |
|
|
|
|
|
|
|
для: TetRiska
(04.07.2012 в 23:26)
| | решил, тему можно в пхп раздел перенести, не туда создал
$next = true;
while($next){
$num = rand(1000000000,2147483647);
$check = "
SELECT `pi_programs_buy_id`
FROM `pi_programs_buy`
WHERE `pi_programs_buy_num` = '".$num."'
";
$check = select_query($check);
if($check['count'] == 0){
$next = false;
}
}
|
| |
|
|
|
|
|
|
|
для: TetRiska
(05.07.2012 в 02:02)
| | А не наоборот ли - получить все из базы, поместить в массив, и уже в массиве искать совпадения? | |
|
|
|