Issue with Discontinued Mysql for Mysqli

Asked

Viewed 20,410 times

1

I’m having a problem on my site, it all started after I received a discontinuation message from Mysql, and asked me to change to Mysqli, after I change a series of codes appeared on my page, what I should do to fix the errors?

The initial error was, the following:

Deprecated: mysql_connect(): The mysql Extension is deprecated and will be Removed in the Future: use mysqli or PDO Instead in /home/firefly/public_html/Decor/system/database/mysql.php on line 6 Warning: session_start(): Cannot send Session cookie - headers already sent by (output Started at /home/firefly/public_html/Decor/system/database/mysql.php:6) in /home/firefly/public_html/Decor/system/library/Session.php on line 11Warning: session_start(): Cannot send Session cache Limiter - headers already sent (output Started at /home/firefly/public_html/Decor/system/database/mysql.php:6) in /home/firefly/public_html/Decor/system/library/Session.php on line 11Warning: Cannot Modify header information - headers already sent by (output Started at /home/firefly/public_html/Decor/system/database/mysql.php:6) in /home/firefly/public_html/Decor/system/library/currency.php on line 45


The code I currently have:

<?php
final class MySQL {
    private $link;

    public function __construct($hostname, $username, $password, $database) {
        if (!$this->link = mysql_connect($hostname, $username, $password)) {
            trigger_error('Error: Could not make a database link using ' . $username . '@' . $hostname);
        }

        if (!mysql_select_db($database, $this->link)) {
            trigger_error('Error: Could not connect to database ' . $database);
        }

        mysql_query("SET NAMES 'utf8'", $this->link);
        mysql_query("SET CHARACTER SET utf8", $this->link);
        mysql_query("SET CHARACTER_SET_CONNECTION=utf8", $this->link);
        mysql_query("SET SQL_MODE = ''", $this->link);
    }

    public function query($sql) {
        if ($this->link) {
            $resource = mysql_query($sql, $this->link);

            if ($resource) {
                if (is_resource($resource)) {
                    $i = 0;

                    $data = array();

                    while ($result = mysql_fetch_assoc($resource)) {
                        $data[$i] = $result;

                        $i++;
                    }

                    mysql_free_result($resource);

                    $query = new stdClass();
                    $query->row = isset($data[0]) ? $data[0] : array();
                    $query->rows = $data;
                    $query->num_rows = $i;

                    unset($data);

                    return $query;  
                } else {
                    return true;
                }
            } else {
                trigger_error('Error: ' . mysql_error($this->link) . '<br />Error No: ' . mysql_errno($this->link) . '<br />' . $sql);
                exit();
            }
        }
    }

    public function escape($value) {
        if ($this->link) {
            return mysql_real_escape_string($value, $this->link);
        }
    }

    public function countAffected() {
        if ($this->link) {
            return mysql_affected_rows($this->link);
        }
    }

    public function getLastId() {
        if ($this->link) {
            return mysql_insert_id($this->link);
        }
    }   

    public function __destruct() {
        if ($this->link) {
            mysql_close($this->link);
        }
    }
}
?>
  • Enter part of the source code. Related: migratemysql_* to mysqli_*

  • 2

    If you are using mysqli, you should not be calling the mysql_connect function, which causes the first error. And by solving the first one, the other mistakes you mentioned will also go away.

2 answers

1

Based on the file you sent, I changed the mysql functions to mysqli. Goes below.

Please replace them with yours surgically. But before changing, make a copy of your original mysql.php file.

   <?php

final class MySQL {

    private $link;

    public function __construct($hostname, $username, $password, $database) {


        if (!$this->link = new mysqli($hostname, $username, $password, $database)) {
            trigger_error('Error: Could not make a database link using ' . $username . '@' . $hostname);
        }

        mysqli_query($this->link,"SET NAMES 'utf8'");
        mysqli_query($this->link,"SET CHARACTER SET utf8");
        mysqli_query($this->link,"SET CHARACTER_SET_CONNECTION=utf8");
        mysqli_query($this->link,"SET SQL_MODE = ''");

    }

    public function query($sql) {
        if ($this->link) {

            $resource =  $this->link->query($sql);

            if ($resource) {
                if (is_resource($resource)) {
                    $i = 0;

                    $data = array();

                    while ($result = $resource->fetch_assoc()) {
                        $data[$i] = $result;

                        $i++;
                    }

                    mysqli_free_result($resource);

                    $query = new stdClass();
                    $query->row = isset($data[0]) ? $data[0] : array();
                    $query->rows = $data;
                    $query->num_rows = $i;

                    unset($data);

                    return $query;
                } else {
                    return true;
                }
            } else {
                trigger_error('Error: ' .  mysqli_error($this->link) . '<br />Error No: ' . mysqli_error($this->link) . '<br />' . $sql);
                exit();
            }
        }
    }

    public function escape($value) {
        if ($this->link) {
            return mysqli_real_escape_string( $this->link,$value);
        }
    }

    public function countAffected() {
        if ($this->link) {
            return mysqli_affected_rows($this->link);
        }
    }

    public function getLastId() {
        if ($this->link) {
            return mysqli_insert_id($this->link);
        }
    }

    public function __destruct() {
        if ($this->link) {
            mysqli_close($this->link);
        }
    }

}

?>
  • 2

    Sorry for the delay, I had problems with some sales made on my site, as I no longer have access to the control panel had to reverse sales. More thank you so much for helping my friend, now appears another error to find that the best is I start a new store from scratch, to expedite the problem.

0


There is a part of your code that is still using mysql, and needs to be updated. Many changes have been added. Please look at the file /home/vagalume/public_html/decor/system/database/mysql.php on line 6.

Below is an example of the functions that should be used in mysqli.

    <?php

    $link = new mysqli('localhost', 'root', '', 'loja');

    if (!$link) {
        die('Connect Error (' . mysqli_connect_errno() . ') '
                . mysqli_connect_error()); }

   $query = "INSIRA AQUI SUA SQL" or die("Error in the consult.." . mysqli_error($link));  
   $result = $link->query($query); 
   if ($result = $link->query($query))  var_dump(mysqli_fetch_array($result));   

    mysqli_close($link);

This is a basic configuration file for the database.

  • 1

    I do not know of php, the developer of my site, is gone and I am managing the way I can, but this hard. This value described above I find in my Mysql?

  • do you have access to display this file? /home/firefly/public_html/Decor/system/database/mysql.php. I say mysql.php that is in this path above?

  • I do have this open in my editor

  • you could display it here or somewhere. You can erase user data and password before.

  • no user and password option appears!

  • I will answer my own question with the code,

  • You’ve scanned the code?

  • That’s all there is in that file?

  • yes the funny thing is that I have the store already 2 years and suddenly stopped, it is done in opencart

  • I sent the file as an answer. Please use it carefully.

  • The error was this: Parse error: syntax error, Unexpected 'public' (T_PUBLIC) in /home/firefly/public_html/Decor/system/database/mysql.php on line 18

  • made some changes. Look now.

  • I added one more fix. please update your file.

Show 8 more comments

Browser other questions tagged

You are not signed in. Login or sign up in order to post.