mysqli::real_escape_string. Как реализовать?

Имеется такой код, разумеется, здесь он в немного упрощенном варианте:

class mysql {


    public function query($sql) {

        $mysqli = new mysqli(DB_HOST, DB_UNAME, DB_PASS, DB_NAME);

        $get = array_map(array($mysqli, 'real_escape_string'), $_GET);
        $post = array_map(array($mysqli, 'real_escape_string'), $_POST);

        if ($mysqli->connect_errno) {
             printf("%s\n", $mysqli->connect_error);
             exit();
        }

        if($result = $mysqli->query($sql)) {
            ...
        }
   
    }

}

class myclass extends mysql {
    ...
}

$obj = new myclass;
$data = $obj->query('SELECT * FROM `table` WHERE `id` = \''.$_GET['id'].'\'');

...

Вопрос: Как реализовать экранирование значений ассоциативного массива $_GET до того, как формируется сам запрос, который передается методу mysql::query как $sql...просто в данной ситуации строки...

$get = array_map(array($mysqli, 'real_escape_string'), $_GET);
$post = array_map(array($mysqli, 'real_escape_string'), $_POST);

...бесполезны :(

Экранирование самой строки...

$sql = $mysqli->real_escape_string($sql);

...разумеется, выдает ошибку SQL-синтаксиса.


Ответы (0 шт):