@Vitaly_S Я не в курсе. Я так понимаю, что на каждом клиенте будет экземпляр, а не на сервере. Скорее всего с отделом продаж Oracle надо связываться и узнавать у них. А вообще лучше PostgreSQL все-таки.
@temp5423 print_r() с одним параметром (то, что нужно вывести) возвращает true а в поток вывода вываливает значение первого параметра, а если указать второй параметр true, то print_r() вернет первый параметр в виде строки, аккуратно отформатированный если это объект или массив.
@temp5423 Какое число? Из SELECT count(*) ...? Там возращается одна строка (массив) с одним-единственным полем. Сделайте тому, что возвращается, print_r() и посмотрите.
@temp5423 Очевидно потому, что в случае SELECT mysqli_affected_rows() вызывает внутри себя функцию mysqli_num_rows(). А вообще если Вы постараетесь перевести словосочетание "affected rows" на русский язык, то обнаружите, что оно обозначает приблизительно "затронутые строки". Т.е. не выбранные строки, а затронутые, такие, над которыми были произведены действия, изменения. И то, что разработчикам расширения mysqli взбрело в голову, что было бы неплохо такого "сахарку" подсыпать горе-программистам, вовсе не означает, что так оно и должно быть. Тем более что эта "фича" только там и присутствует, похоже.
@0neS Что ж в нем неправильного? Пусть совпадение хешей и очень маловероятно, но я думаю что написать несколько строчек кода, чтобы управлять этой ситуацией, не составляет особого труда. Уж совсем маловероятно, если три раза подряд попадется уже занятый хеш, но тогда хоть пользователь увидит внятное сообщение, а не будет гадать, почему это он (например) зарегистрировался (а на самом деле запись не была создана), но зайти не может.
Впрочем это не вполне правильное решение: в случае, если ошибка возникает по какой-то другой причине, цикл будет исполняться вечно (пока его процесс не будет убит из-за лимита времени). В общем: -1) установить счетчик попыток в 0, 0) сгенерировать хеш 1) попробовать вставить запись, 2) если в этот момент произошла ошибка (вернулся false, или affected rows = 0, или исключение, или черт лысый), проверить счетчик попыток: если равен 3, сказать пользователю что ошибка, если меньше 3, увеличить на 1 и перейти к шагу 0) - думаю такой алгоритм сами напишете в коде.
@0neS Ну так если поле уже unique, при вставке записи получите ошибку или исключение (в зависимости от используемой библиотеки для доступа к БД). Если ошибка - генерируете новый хеш. Всего-то делов.