Как исправить ошибку «PHP Warning: array_map() expects parameter 1 to be a valid callback, first array member is not a valid class name or object»?

Есть вот такой кусок PHP кода:

if(isset($_POST)){
      if(!isset($_POST['ft'])){
      $_POST = @array_map(array($database->connection, 'real_escape_string'), $_POST);
      $_POST = array_map('htmlspecialchars', $_POST);
      }
    }
      
    $rsargs=$_GET['rsargs'];
    $_GET = array_map(array($database->connection, 'real_escape_string'), $_GET);
    $_GET = array_map('htmlspecialchars', $_GET);
    
    $_GET['rsargs']=$rsargs;
    $_COOKIE = array_map(array($database->connection, 'real_escape_string'), $_COOKIE);
    $_COOKIE = array_map('htmlspecialchars', $_COOKIE);


Везде, где в функцию
array_map()

вложена функция
array()

происходит ошибка:

PHP Warning: array_map() expects parameter 1 to be a valid callback, first array member is not a valid class name or object

Как мне убрать эту ошибку? Или достаточно в начале поставить @?
  • Вопрос задан
  • 3140 просмотров
Пригласить эксперта
Ответы на вопрос 4
Anonym
@Anonym
Программирую немного )
Ну говнокод ведь лютый
Ответ написан
toxa82
@toxa82
$database->connection должно быть объектом у которого есть метод real_escape_string. Вполне может быть что у вас не подключается к БД и соответственно $database->connection пустой.
Ответ написан
Комментировать
@kaasius
Думаю, этот код не нужен. Данные должны эскейпиться по месту использования (вставки в данном случае), а не по месту получения (глобальные массивы). Хороший пример, как это делать в кустарных условиях (за рамками фреймворков в смысле) - dklab.ru/lib/DbSimple

Ну и да - очевидно, что $database->connection - не объект в вашем случае.
Ответ написан
Комментировать
одно из двух. либо $database->connection не является объектом и соответственно в нём нет метода real_escape_string либо является но в нём нет метода real_escape_string

сделайте var_dump для $database->connection и посмотрите что это. если всё таки объект то проверьте есть ли метод, например так: if (method_exists($obj, 'method') echo 'Метод есть'
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы