Я не хочу призывать вас использовать глобальные переменные, но если вы хотите получить доступ к $db
из безопасной функции, вам придется поставить global $db;
в начале функции.
В результате:
$db = new mysqli($host,$user,$password,$database_name);
function safe ($data) {
global $db;
if(!is_array($data)) {
if(!get_magic_quotes_gpc()) {
$data = $db->escape_string($data);
return $data;
}
} else {
return array_map('safe',$data);
}
}
Обратите внимание, что глобалы считаются злом и не должны использоваться.
Что вы должны использовать тогда? Что ж, для вашего случая использования шаблон реестра (помните об этом позже), вероятно, подойдет лучше всего. Но чтобы начать работу с объектно-ориентированным программированием, вам следует попробовать следующее:
class myClass {
protected $db;
public function __construct() {
$this->db = new mysqli($host,$user,$password,$database_name);
}
function safe ($data) {
if(!is_array($data)) {
if(!get_magic_quotes_gpc()) {
$data = $this->db->escape_string($data);
return $data;
}
} else {
return array_map('safe',$data);
}
}
}
Я призываю вас прочитать больше об объектно-ориентированном программировании, так как оно поможет вам писать более качественный и многократно используемый код.
Надеюсь, я смогу помочь.