将不推荐使用的函数转换为mysqli_real_escape_string

时间:2019-07-15 14:59:00

标签: php html mysqli

一个以前不在工作的同事在php5中创建了一个数据库,因此我不得不更新到php7。 我不像他那样精通,所以在转换一些函数时遇到了一些麻烦,mysqli_real_escape_string是主要函数 这是一段代码:

/************** Classes ****************/
require 'class/class_mysql.php';
$mysqli = new mysql;

/**************** MySQL ****************/
require 'db_config.php';
if(!$mysqli->connect($databaseConfig['host'], $databaseConfig['user'], $databaseConfig['pass'])) {
  fatal_error('Unable to connect to MySQL server.');
}
if(!$mysqli->select_db($databaseConfig['database'])) {
  debug(mysqli_error());
}

/******* Prevent SQL Injection ********/
function escape_array($array) {
	if(!is_array($array)) {
		fatal_error('$array is not an array.');
	}
	foreach ($array as $key => $value) {
		$array[$key] = clean($value);
	}
	return $array;
}

$_SERVER['REQUEST_URI'] = str_replace('&', '&', $_SERVER['REQUEST_URI']); //remove &
function clean($data) {
	if(is_array($data)) {
		$data = escape_array($data);
	} else {
		$data = mysqli_real_escape_string($this->link, htmlspecialchars(trim($data), ENT_QUOTES, "ISO-8859-1"));
	}
	return $data;
}

function fatal_error($msg) {
	echo '<br /><br /><b>Fatal Error:</b> <font color="red">'.$msg.'</font><br /><br />';
	exit;
}

,并从“类”包含文件中:

class mysql {
	var $link;
	var $queries = 0;
	function connect($host, $user, $pass) {
		$this->link = mysqli_connect($host, $user, $pass, $database);
		if($this->link) {
			return TRUE;
		} else {
			return FALSE;
		}
	}

最后是数据库配置文件:

$databaseConfig = array(
  'host'     => 'localhost',
  'user'     => 'user',
  'pass'     => 'pass',
  'database' => 'database'
);

我在$ data = mysqli_real_escape_string($ this-> link,htmlspecialchars(trim($ data),ENT_QUOTES,“ ISO-8859-1”))上收到错误; “ $ this-> link”部分的行

我相信我的问题是因为db config是一个数组。 我无法弄清楚这一点,所以任何帮助都会给您带来帮助!

当我学习PDO时,很可能会再次更改它。

0 个答案:

没有答案