Помогает ли PDO для защиты?
PDO защищает только от mysql инъекций а от этого нет?
Совершенно верно. Prepared statements (не PDO) используются для безопасной вставки данных в БД. А если сами данные небезопасны - это уже совсем другой вопрос и решается совсем другими инструментами.
Пропускай входные данные через эту функцию это xss атака function namefunction($data){
		foreach($data as $key => $value){
			if(is_array($value)) namefunction($value);
			else $data[$key] = htmlspecialchars($value);
		}
		return $data;
	}