• Записи 162
  • Теги 66
  • Комментарии 330

Компьютерное

Решение проблемы с mysql_connect в PHP 7

Как известно, в PHP7 окончательно удалили расширение mysql, и теперь функции вида mysql_connect, mysql_query вызывают ошибку "Call to undefined function". Тем не менее, еще встречается код, который использует именно эти функции, и который, зачастую, бывает сложно быстро исправить. Заставить работать такой код на PHP7 достаточно просто — нужно определить эти функции самостоятельно и вызывать в них соответствующие функции из расширения MySQLi. Недавно столкнулся с такой ситуацией и сделал небольшой файл mysql.php, в котором объявил наиболее часто используемые функции.


Подключить его можно следующим образом:


if (version_compare(PHP_VERSION, '7.0.0','>=')) include 'mysql.php';
Прикрепленные файлы:

32 комментария:

Показать еще 10 комментариев
4X_Pro
0

Лушче бы на форуме отдельную тему создать, ну да ладно.

В preg_replace строку с регулярными выражениями нужно обрамлять какими-либо небуквенными символами (как и в Perl, откуда регулярные выражения и пришли). Обычно используется либо /, либо |. Т.е. нужно писать так: preg_replace("|\r\n|","<br>",html_entity_decode($db_sect['name'],ENT_QUOTES));
Но вообще, для этого есть встроенная функция nl2br, которая работает куда быстрее, чем регулярные выражения, а кроме того, такое можно и через str_replace сделать.
Нет
Гость
0

есть PHP 7.4 и старый сайт, который писался для php 5 в sql.safe_mode = true.
функция mysql_connect там вызывается только с 3-мя параметрами, четвертый в сейфмоде sql не учитывался.
Fatal error: Uncaught ArgumentCountError: Too few arguments to function mysql_connect(), 3 passed in /home/... and at least 4 expected in /home/...mysql.php:10
что cделать? сорри я не программер)

4X_Pro
0

В четвертый параметр прописать значение false.
Или, как вариант, в моём файле привести заголовок функции mysql_connect к такому виду:

function mysql_connect($server,$username,$password,$new_link=false,$client_flags=0) {


Нет
Гость
0
4X_Pro, Здравствуйте подключили как и сказали но вот что пишет

Fatal error: Uncaught Error: Call to undefined function mysql_result() in /var/www/x_u_3592/data/www/sait/index.php:28 Stack trace: #0 {main} thrown in /var/www/x_u_3592/data/www/sait/index.php on line 28



Код из 28строки

count_site = mysql_result(mysql_query("SELECT COUNT(*) FROM `site` WHERE `id_category` = '".$category['id']."' AND `mod` = '1' AND `ban` = '0'"),0); $sql_count++;

4X_Pro
0

В файле есть не все функции, а только самые часто употребляемые. Прямого аналога mysql_result в MySQLi нет, но можно сделать что-то такое:

function mysql_result($res,$offset,$field=0) {   mysqli_data_seek($res,$offset);   mysqli_field_seek($res,$field);   return mysqli_fetch_field($res); }


Нет
vPro
0

все подключил вылезли ошибки:

Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, null given in C:\OpenServer\domains\adminltenew\pages\magdalena\auth\mysql_new.php on line 75 Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, null given in C:\OpenServer\domains\adminltenew\pages\magdalena\auth\mysql_new.php on line 75 Warning: mysqli_query() expects parameter 1 to be mysqli, null given in C:\OpenServer\domains\adminltenew\pages\magdalena\auth\mysql_new.php on line 17 Warning: mysqli_error() expects parameter 1 to be mysqli, null given in C:\OpenServer\domains\adminltenew\pages\magdalena\auth\mysql_new.php on line 58 Mysql error: Warning: mysqli_query() expects parameter 1 to be mysqli, null given in C:\OpenServer\domains\adminltenew\pages\magdalena\auth\mysql_new.php on line 17 Warning: mysqli_error() expects parameter 1 to be mysqli, null given in C:\OpenServer\domains\adminltenew\pages\magdalena\auth\mysql_new.php on line 58 Mysql error:



Подскажите где копать?
4X_Pro
0
vPro, проверить, получается ли установить соединение с базой, и что попадает в глобальную переменную $GLOBALS['mysql_oldstyle_link']. Так как судя по всему, сейчас там NULL, а такое обычно бывает при ошибке соединения с БД.
Нет
seoonly.ru
0

норм тема)!

Нет
Эмиль
0

Чувак ты гений,мучался 2 дня . Спасибо огромное тебе

Нет
Гость
0

еще бы хорошо добавить в этот файл:
#define MYSQL_NUM = MYSQLI_NUM;

Написать комментарий


Задать вопрос