рекомендую посмотреть в сторону доктрины, да, по началу она кажется монструозной, но на практике все проще.
конкретно по вашей теме:
1. $where = '1 ; DROP DATABASE database_name'; И счастье радость, улыбки после анального секса))
2. что будет, если я передам не строки входными аргументами?
3. динамический $where... похоже вы делаете свою orm, я прав? Если да - не делайте, это уже есть и работает даже быстро и качественно))
4. НЕ ИСПОЛЬЗУЙТЕ ТРАНСЛИТ!!! Не опускайтесь до уровня 1С
5. if(, $table_name, function table_name(), $STH... Используйте PSR-2
6. Конструкцию
for($i = 0; $i < count($pole); $i++){
$que .= $pole[$i]." = ?, ";
}
$que = substr($que, 0, -2);
можно заменить на
$que = implode(' = ?,', $pole) . '= ?';
7. Если вам явно не нужен $i - используйте foreach
8. Поля все же стоит экранировать
9. Не нагружайте метод не нужной работой: если вам нужно работать со строкой - работайте, но в вашем случае нужен явно массив, так и принимайте только массив.
10. Вместо таких конструкций лучше либо используйте регулярки, либо проход с trim
$pole = explode(", ", $pole);
Если передать туда
$pole = 'a1, a2,\r a3';
Вы получите не совсем то, что ожидается.
preg_match_all('/[^\s\,]+/u', $pole, $matches);
11. Не используйте именование переменных в единичном представлении, когда работаете с множествами.
НЕ $pole, а $fieldList/$fields (в случае массива)
12. PDO != mysqli, для начала все же почитайте, какое API предлагает PDO, а потом его используйте. Просто то, что у вас сейчас - это как вилкой хлебать борщ.
13. И напоследок лучше - используйте ===, вместо ==