Poprawa kodu PHP 5.6.4 + mysql 5.7

0

Szukam kogoś kto przyjąłby takie zlecenie (cena do uzgodnienia):
Zmieniam konto hostingowe - przenoszę serwis na mój serwer i mam błąd niezgodności dostępu do bazy danych mysql
Poprzedni hosting to debian5 + baza percona5.5 + php5.6.4 a mój obecny to ubuntu 20 + mysql5.7 + php5.6.4 (niestety nie da się zainstalować percona5.5 na ubuntu 20 co by rozwiązało problem).

Mam taki błąd

[12-Jan-2023 23:19:26 Europe/Warsaw] PHP Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /var/www/site1/home/users/public_html/zgloszenia/core/database/mysql.class.php on line 51

A kod wygląda tak:

<?php 

// Klasa do obsługi baz danych MySQL

class mysql {

    // metoda ustanowiająca połączenie z bazą danych
    public function connect($param)
    {

           $link = mysql_pconnect($param['database']['host'], $param['database']['user'], $param['database']['pass']);
		 //$link = mysql_connect($param['database']['host'], $param['database']['user'], $param['database']['pass']);
		 //$link = mysqli_connect("p:".$param['database']['host'], $param['database']['user'], $param['database']['pass']);
		 //$link = mysqli_pconnect($param['database']['host'], $param['database']['user'], $param['database']['pass']);


 //  $link = function mysql_pconnect($param['database']['host'], $param['database']['user'], $param['database']['pass']){
    //    return $link = mysqli_connect("p:".$param['database']['host'], $param['database']['user'], $param['database']['pass']);

		
		
		
  	$flag = mysql_select_db($param['database']['db']); 
        if (!$link || !$flag)
            die ("Błąd: Nie mogę połączyć się z bazą danych. Odpowiedź serwera: ".mysql_error());
        mysql_query("SET NAMES utf8");
  	
    }

    public function disconnect()
    {
        mysql_close();
    }
 	
    public function query($query)
    {
        return mysql_query($query);
    }
  	
    public function fetch($sql)
    {
        return mysql_fetch_array($this->query($sql));
    }
   	
    function fetchAll($sql, $mode=FALSE)
    {
        if (!$mode)
            $mode = 'ARRAY';

        $query = mysql_query($sql);
        if (mysql_num_rows($query) != 0)  //////////////////////////////////////////////TO JEST LINIA 51
        {
            $rows = array();
            if ($mode == 'ARRAY')
            {
                while(($row = mysql_fetch_array($query)) != null)
                {
                    $rows[] = $row;
                }
            }
            if ($mode == 'ASSOC')
            {
                while(($row = mysql_fetch_assoc($query)) != null)
                {
                    $rows[] = $row;
                }
            }
            if ($mode == 'OBJECT')
            {
                while(($row = mysql_fetch_object($query)) != null)
                {
                    $rows[] = $row;
                }
            }
            return $rows;
   	}
        else
            return false;
    }
	
    public function fetchOne($sql)
    {
        $result = mysql_fetch_array($this->query($sql));
   	return $result[0];
    }
 	
    public function filter($text)
    {
        return mysql_real_escape_string($text);
    }
  	
    public function num_rows($sql)
    {
        return mysql_num_rows($this->query($sql));
    }
  	
    public function last_id()
    {
        return mysql_insert_id();
    }
   	
    public function fetchAsArray($sql)
    {
        $query = mysql_query($sql);
	if (mysql_num_rows($query) != 0)
        {
            $rows = array();
            while(($row = mysql_fetch_array($query)) != null)
            {
                $rows[] = $row[0];
            }
            return $rows;
   	}
        else
            return false;
    }

    public function startTransaction()
    {
        mysql_query('set autocommit=0;');
        mysql_query('start transaction;');
    }

    public function commit()
    {
        mysql_query('commit;');
        mysql_query('set autocommit=1;');
    }

    public function rollback()
    {
        mysql_query('rollback;');
        mysql_query('set autocommit=1;');
    }

}

?>

0
Sylwek Kajor napisał(a):

Mam taki błąd

[12-Jan-2023 23:19:26 Europe/Warsaw] PHP Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /var/www/site1/home/users/public_html/zgloszenia/core/database/mysql.class.php on line 51

PHP zwraca false w momencie niepoprawnego połączenia z bazą albo niepoprawnego query. Więc ten błąd sam w sobie nic nam nie powie. Kod który podałeś to też jest za mało, żeby to wydedukować. Musiałbyś pokazać co dokładnie woła fetchAll()

0

Musisz to uaktualnić. Próba rzeźbienia w PHP 5.6 to porażka. Ta wersja nie jest już wspierana pod kątem bezpieczeństwa od co najmniej 4 lat.

0
jurek1980 napisał(a):

Musisz to uaktualnić. Próba rzeźbienia w PHP 5.6 to porażka. Ta wersja nie jest już wspierana pod kątem bezpieczeństwa od co najmniej 4 lat.

To byłoby moje kolejne zlecenie - aktualizacja kodu php do wersji 7.4 lub 8. Mysql też chętnie do wersji 8.

1

Zrób to w jednym zleceniu, bo to ta sama robota i zapłacisz podwójnie.

0

Jak duży jest ten twój projekt ?

0

Dzięki wielkie za zainteresowanie ale już znalazłem odpowiednią osobę.

1 użytkowników online, w tym zalogowanych: 0, gości: 1