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-синтаксиса.