Помогите плиз подправить код Скрипт регистрации пользователей На 5,6 работал отлично. Сейчас перешли на php7 не хочет работать Напр где было mysql_query я поменял на mysqli_query вот тут не хочет добавлять Мне кажется что проблема в mysql_result . Скорее всего в 7 версии нужно по другому переписать PHP: if (!empty($_POST['login']) AND !empty($_POST['password'])) { // фильтрируем логин и пароль $login = mysql_real_escape_string(htmlspecialchars($_POST['login'])); $password = mysql_real_escape_string(htmlspecialchars($_POST['password'])); // проверяем есть ли логин в нашей базе данных if (mysql_result(mysql_query("SELECT COUNT(*) FROM `users_profiles` WHERE `username` = '".$login."' LIMIT 1;"), 0) != 0) { echo 'Выбранный логин уже зарегистрирован!'; exit(); } // заносим данные в таблицу, обратите внимание - пароль кодируем в md5 mysql_query("INSERT INTO `users_profiles` (`username`, `password`) VALUES ('".$login."', '".md5($password)."')"); echo 'Вы успешно зарегистрированы!'; exit(); } так же само тут не запускается когда водятся данные для входа . Вроде проблема в строчке где mysql_result ..... Код (Text): if(!empty($_POST['login']) AND !empty($_POST['password'])) { // фильтрируем логин и пароль $login = mysql_real_escape_string(htmlspecialchars($_POST['login'])); $password = mysql_real_escape_string(htmlspecialchars($_POST['password'])); $search_user = mysql_result(mysql_query("SELECT COUNT(*) FROM `users_profiles` WHERE `username` = '".$login."' AND `password` = '".md5($password)."'"), 0); if($search_user == 0) { echo '<form id="myform" class="all" action="login.php" method="POST"><div align="center">Введенные данные неправильные или пользователь не найден. <br /><br /><a href="login.php" class="button" >Авторизация</a> </div></form>'; exit(); }
документацию по mysqli нужно почитать. там небольшие изменения по сравнению с mysql не только в добавлении буквы i
Но в вашем коде везде mysql, а не mysqli. Ну и да, хотите работать с mysqli - работайте с ним как с mysqli, а не как с mysql. Это другой интерфейс, а не переименованный старый.
внезапно™ --- Добавлено --- кроме шуток, лично я недоумеваю зачем разрабы пхп устроили эту канитель. запросто могли обновить драйвер сохряняя API, как в случае с mysqlnd. но нет, решили что уход с расширения mysql должен сопровождаться тотальным вмешательством в исходники.
Там такое "обновить", что проще переписать было. API поменялся тоже не просто так. И тут либо двоить API-инструкции и логику, поддерживая и старый набор, которому плевать на кодировку, которому плевать на линк коннекта, который имплементирует совсем другой набор методов, который наглухо завязан на логику совершенно другой библиотеки. Который написан хз когда и хз сколько там говнокода под капотом нерефакторенного, либо сделать отдельную либу. Без этих проблем. С большим временем на переход старой в deprecated и с еще бОльшим временем на переход из deprecated в removed. Они выбрали второй путь. А потом еще фиг заставишь людей использовать новые возможности, которые закрывают дыры. Людям же и так норм. Люди готовы втыкать в код собак, думая, что ошибки исправляют. Иногда людям нужно прививать хорошие манеры в принудительном порядке. Увы. Хочешь, чтобы твой код работал на новой платформе - бедь добр, следуй гайдлайнам, которым уже скоро 5 лет будет. Как говорят индейцы - если лошадь сдохла, слезь.
не усложняй. я говорю про интерфейс, а не про то что под капотом. интерфейс процедурного варианта mysqli очень похож на mysql. можно было подменить запросто. --- Добавлено --- пыху ругают за то, что она слишком добра к нубам, что тащит горы легаси. это их принципиальный подход. почему же они так непоследовательны в этом конкретном случае — я не понимаю.
Потому что пора пыхе взрослеть. И она начала. Не только mysql отвалился же. m_crypt тоже умер, точнее депрекейтнулся. Официальная причина: "эта либа имела слишком упоротый API и уже 10 лет не обновлялась, у нас нет времени. По этому мы ее выбросили. Теперь вместо нее будет обертка над OpenSSL". Это я прочувствовал на себе, покуда использую шифрование в текущем проекте. Но ничего, переход был довольно простой. OpenSSL нравится больше. И это тоже правильно. До 7 версии пыха была в кризисе. Шестая версия умерла не родившись. Седьмая - это новое ядро, новый подход к работе, новые структуры данных, все с чистого листа. Без оглядки на легаси. Тот факт, что при этом прямая совместимость сломалась всего лишь в паре-тройке конкретных узких мест - уже чудо.
хахаха. без оглядки. да практически весь хлам на месте: засранное глобальное пространство имён, непоследовательность в именовании функций, непоследовательность в порядке аргументов, $_REQUEST, $GLOBALS, ошибки не только как исключения, но и как… мнэ… ошибки, ну и т.д. --- Добавлено --- это не будет разобрано никогда. если разобрать, это уже не PHP, а новый язык будет. так какого буя они убили интерфейс mysql ?! чтобы хоть как-то ущипнуть своих позователей?
Думаю, имели место достаточные причины. Просто так от нехрен делать писать новый адаптер едва ли кто-то будет.