Mysql переход с php4 и 5 на php7 застрял в некоторых функциях - PullRequest
0 голосов
/ 13 декабря 2018

извините, я новичок в php, моему веб-сайту было 10 лет и он завис с php4 и 5.2 на cenos 5, хост-провайдер попросил меня обновить всю систему из-за слишком большого риска, и теперь какой-то хакер установил скрытое майнерское криптовалютуна моем сервере мы через месяц все равно не можем выяснить, только блокируют Ip / порт каждый день и те вернутся.

Теперь система будет php7 и mysql 5.7 много ошибок при локальном тестировании сwaamp server.

Мне трудно преобразовать старый класс php4 в php7 для mysql с помощью mysqli_query.и первая функция sql_query я не могу заставить его работать.образец, пожалуйста, помогите:

    $dbhost = "localhost";
$dbuname = "root";
$dbpass = "pass";
$dbname = "ddd";
$prefix = "vvv";
$user_prefix = "uuu";
$dbtype = "MySQLi";

$db = new sql_db($dbhost, $dbuname, $dbpass, $dbname, false);

//test1:
  $result = $db->sql_query("SELECT active, view FROM ".$prefix."_modules limit 1");
  list($mod_active, $view) = $db->sql_fetchrow($result);
 echo $mod_active;
 echo '\n=========================\n';
 // test2
 $sql = "SELECT sid,title FROM ".$prefix."_stories ORDER BY sid DESC LIMIT 10"; $content =''; $result = $db->sql_query($sql);
 while($row = $db->sql_fetchrow($result)) {
     echo $content .= $row['sid'].' : '.$row['title'];
 }  


class sql_db
{

    var $db_connect_id;
    var $query_result;
    var $row = array();
    var $rowset = array();
    var $num_queries = 0;

    //
    // Constructor
    //
    function __construct($sqlserver, $sqluser, $sqlpassword, $database, $persistency = false)
    {

        $this->persistency = $persistency;
        $this->user = $sqluser;
        $this->password = $sqlpassword;
        $this->server = $sqlserver;
        $this->dbname = $database;

        if($this->persistency)
        {
            $this->db_connect_id = mysqli_connect("p:".($this->server), $this->user, $this->password);
        }
        else
        {
            $this->db_connect_id = mysqli_connect($this->server, $this->user, $this->password);
        }
        if($this->db_connect_id)
        {
            if($database != "")
            {
                $this->dbname = $database;
                $dbselect = mysqli_select_db($this->db_connect_id, $this->dbname);
                if(!$dbselect)
                {
                    mysqli_close($this->db_connect_id);
                    $this->db_connect_id = $dbselect;
                }
            }
            return $this->db_connect_id;
        }
        else
        {
            return false;
        }
    }

    //
    // Other base methods
    //
    function sql_close()
    {
        if($this->db_connect_id)
        {
            if($this->query_result)
            {
                mysqli_free_result($this->query_result);
            }
            $result = mysqli_close($this->db_connect_id);
            return $result;
        }
        else
        {
            return false;
        }
    }

    //
    // Base query method
    //
    function sql_query($query = "", $transaction = FALSE)
    { 
        // Remove any pre-existing queries
        unset($this->query_result);
        if($query != "")
        {
            $this->query_result = mysqli_query($this->db_connect_id, $query);
        }
        if($this->query_result)
        {
            //print_r($this->query_result);
            unset($this->row[$this->query_result]);
            unset($this->rowset[$this->query_result]);
            return $this->query_result;
        }
        else
        {
            return ( $transaction == END_TRANSACTION ) ? true : false;
        }
    }

    //
    // Other query methods
    //
    function sql_numrows($query_id = 0)
    {
        if(!$query_id)
        {
            $query_id = $this->query_result;
        }
        if($query_id)
        {
            $result = mysqli_num_rows($query_id);
            return $result;
        }
        else
        {
            return false;
        }
    }
    function sql_fetchrow($query_id = 0)
    {       

        if(!$query_id)
        {
            $query_id = $this->query_result;
        }
        if($query_id)
        {
            $this->row[$query_id] = mysqli_fetch_array($query_id);
            return $this->row[$query_id];
        }
        else
        {
            return false;
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Есть мало различий между mysql и mysqli.Поскольку у вас есть свой отдельный класс mysql, я бы посоветовал вам внести некоторые изменения в этот класс.Недавно я написал блог об этом.Вы можете посмотреть.Вы также можете найти пример кода.

LINK

0 голосов
/ 13 декабря 2018

Мне было интересно, просматривали ли вы Документы по миграции: http://php.net/manual/en/migration70.php

Ваш сайт будет жаловаться на определенные функции, поэтому, если вы свяжетесь с этими функциями с помощью документов миграции, вы сможетечтобы избавиться от многих проблем, с которыми вы столкнулись.

...