विधि के नाम से तर्क queryAsArray
, ऐसा लगता है कि आप इस DbBase का उपयोग कर रहे हैं MySQL फ़ंक्शन मैनुअल पेज की टिप्पणियों से वर्ग
. अगर ऐसा है, तो यह query
है एस्केप कैरेक्टर को एस्केप्ड कोटेशन मार्क से हटाता है:
function query($sql, &$records = null){
$sql = str_replace(array('\\"', "\\'"), array('"', "'"), $sql);
// …
}
तब यह कोई चमत्कार नहीं है कि आपका उदाहरण काम करता है (मैंने इसे सरल बनाया):
$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! ↑