Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Составить запрос Mysql
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Составить запрос Mysql

Страниц (1): [1]
 

1. noobphp - 15 Сентября, 2016 - 21:23:48 - перейти к сообщению
Приветствую! Прошу помочь правильно написать условие и составить запрос Mysql.
Нужно сделать так, что если код уже существует в базе, то сгенерировать другой код.
Генерирую 5-ти значный код и записываю в базу:
PHP:
скопировать код в буфер обмена
  1.  
  2. $max = 5;
  3. for ($j=0;$j<$max;$j++)
  4. $track.=rand(0,9);
  5.  
  6. $sql_track=$mysqli->query("SELECT id FROM partners_tracker WHERE track='".$track."'")->fetch_row();
  7.  
  8. if($sql_track[0]>0)
  9. {
  10. //здесь не знаю как написать, в случае если код уже есть в базе, то сгенерировать другой код
  11. }
  12.  
  13. $mysqli->query("INSERT INTO partners_tracker VALUES('NULL','".time()."','$login','$name','$track','0')");
  14.  
2. OrmaJever - 15 Сентября, 2016 - 22:19:38 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $max = 5;
  2. do {
  3.    for ($j=0;$j<$max;$j++) {
  4.       $track.=rand(0,9);
  5.    }
  6.    $sql_track=$mysqli->query("SELECT id FROM partners_tracker WHERE track='".$track."'")->fetch_row();
  7. } while($sql_track[0] > 0);
  8.  
  9. $mysqli->query("INSERT INTO partners_tracker VALUES('NULL','".time()."','$login','$name','$track','0')");
3. noobphp - 15 Сентября, 2016 - 23:46:39 - перейти к сообщению
Спасибо, вроде работает. Только вот почему-то когда ставлю $max = 2; , то иногда в базу пишется 4-х значный код, вместо 2-х значного.
Если не сложно, то не могли бы вы описать как работает ваш код? Просто хочу разобраться, но сам толком не понимаю.
4. Sail - 16 Сентября, 2016 - 09:39:57 - перейти к сообщению
noobphp пишет:
Только вот почему-то когда ставлю $max = 2; , то иногда в базу пишется 4-х значный код, вместо 2-х значного.

Наверное, потому что надо инициализировать $track перед накоплением циферок.
(Добавление)
Спойлер (Отобразить)
5. noobphp - 16 Сентября, 2016 - 12:26:50 - перейти к сообщению
Всем спасибо за помощь, все работает.

 

Powered by ExBB FM 1.0 RC1