Deprecated Error

SuCcEsS

Registered
Някой ако може да помогне

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /h2/home/suvenirc/public_html/vqmod/vqmod.php on line 636

Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /h2/home/suvenirc/public_html/system/database/mysql.php on line 6

vqmod.php редове 632-640
Код:
private function _checkMatch($modFilePath, $checkFilePath) {
		$modFilePath = str_replace('\\', '/', $modFilePath);
		$checkFilePath = str_replace('\\', '/', $checkFilePath);
		
		$modFilePath = preg_replace('/([^*]+)/e', 'preg_quote("$1", "~")', $modFilePath);
		$modFilePath = str_replace('*', '[^/]*', $modFilePath);
		$return = (bool) preg_match('~^' . $modFilePath . '$~', $checkFilePath);
		return $return;

mysql.php редове 1-8
Код:
<?php
final class MySQL {
	private $connection;
	
	public function __construct($hostname, $username, $password, $database) {
		if (!$this->connection = mysql_connect($hostname, $username, $password)) {
      		exit('Error: Could not make a database connection using ' . $username . '@' . $hostname);
    	}
 
Ако не се справяш с превода:

The /e modifier is deprecated, use preg_replace_callback instead in
означава
Вместо модификатора /е, използвай функцията preg_replace_callback
Например ако имаш preg_replace('/nqkakyw regexp/e'); до го направиш
Код:
preg_replace_callback('/nqkakyw izraz w kojto go nqma e-to nakraq/');
The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in
означава да не използваш mysql_* функциите. Вместо тях - PDO или mysqli_*. Има достатъчно материали по тази тема в гугъл.

http://codular.com/php-mysqli
http://code.tutsplus.com/tutorials/why-you-should-be-using-phps-pdo-for-database-access--net-12059
 
много се извинявам, но незнам как да го направя да работи с mysqli четох това което си ми дал, но немога да го схвана и не разбирам php ако може някой да ми го преработи ще съм ви много благодарен ето го и mysql.php
Код:
<?php
final class MySQL {
	private $connection;
	
	public function __construct($hostname, $username, $password, $database) {
		if (!$this->connection = mysqli_connect($hostname, $username, $password)) {
      		exit('Error: Could not make a database connection using ' . $username . '@' . $hostname);
    	}

    	if (!mysql_select_db($database, $this->connection)) {
      		exit('Error: Could not connect to database ' . $database);
    	}
		
		mysql_query("SET NAMES 'utf8'", $this->connection);
		mysql_query("SET CHARACTER SET utf8", $this->connection);
		mysql_query("SET CHARACTER_SET_CONNECTION=utf8", $this->connection);
		mysql_query("SET SQL_MODE = ''", $this->connection);
  	}
		
  	public function query($sql) {
		$resource = mysql_query($sql, $this->connection);

		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 {
      		exit('Error: ' . mysql_error($this->connection) . '<br />Error No: ' . mysql_errno($this->connection) . '<br />' . $sql);
    	}
  	}
	
	public function escape($value) {
		return mysql_real_escape_string($value, $this->connection);
	}
	
  	public function countAffected() {
    	return mysql_affected_rows($this->connection);
  	}

  	public function getLastId() {
    	return mysql_insert_id($this->connection);
  	}	
	
	public function __destruct() {
		mysql_close($this->connection);
	}
}
?>
 
Почти си се справил. Ето едно лесно правило как да преработиш нещата от mysql_* в mysqli_*

На всички заявки добавяш i, това е ясно. Следващото е да добавиш връзката към mysql като първи параметър.
примерно:
Код:
mysql_select_db('db'); -> mysqli_select_db($mysqli_connection, 'db')
mysql_query('заявка'); -> mysqli_query($mysqli_connection, 'заявка');
mysql_fetch_assoc($executed_query) се превръща просто в mysqli_fetch_assoc($executed_query); - тук нямаме подаване на конекцията
В останалите функции няма промяна, освен в mysqli
 
Така като гледам дб обекта е от opencart. Свали последната версия и използваъ mysqli оттам. А за прегреплеис просто обнови vqmod има нова версия. :wink:
 

Back
Горе