Mysql bindValue не экранирует

braconier

Новичок
до этого работал с mysql, сейчас допиливаю проект в котором все обращения к базе через PDO.
когда работал с mysql перед тем как занести в базу пользовался mysql_real_escape_string. в PDO везде пишут что bindValue/bindParam экранируют данные, но данные все равно заносятся в базу без экранирования кавыч... подскажите пожалуйста может я что-то неправильно делаю.
есть метод:
PHP:
    function update($table, $fields, $where, $dataArray, $limit = "") {
        if (!empty($where)){
            $where = "WHERE " . $where;
        }

        if (!empty($limit)){
            $limit = "LIMIT " . $limit;
        }

        $STH = $this->db->prepare("UPDATE $table SET $fields $where $limit");
                foreach ($dataArray as $key => $value) {
         $STH->bindValue( ':'.$key.'',  $value);

        }
        $STH->execute();
    }
 

Фанат

oncle terrible
Команда форума

Фанат

oncle terrible
Команда форума
Лично я бы сделал кастомный прейсхолдер для SET.
и вместо бессмысленной функции update выполнял обычный запрос вида
PHP:
$sql = "UPDATE ?n SET ?u id=?i LIMIT ?i";
$db->run($sql,$table,$fields,$id,$limit);
 
Сверху