Lập luận từ tên phương thức queryAsArray
, có vẻ như bạn đang sử dụng DbBase này lớp từ các nhận xét của trang hướng dẫn các hàm MySQL
. Nếu vậy, đó là query
phương thức xóa ký tự thoát khỏi dấu ngoặc kép đã thoát:
function query($sql, &$records = null){
$sql = str_replace(array('\\"', "\\'"), array('"', "'"), $sql);
// …
}
Vậy thì việc ví dụ của bạn hoạt động không phải là một phép lạ (tôi đã đơn giản hóa nó):
$input = "', BAD SQL INJECTION --";
$sql = "SELECT '".mysql_real_escape_string($input)."'";
var_dump($sql); // string(33) "SELECT '\', BAD SQL INJECTION --'"
// everything’s OK ↑
$sql = str_replace(array('\\"', "\\'"), array('"', "'"), $sql);
var_dump($sql); // string(32) "SELECT '', BAD SQL INJECTION --'"
// Oops! ↑