Że też najprostsze rzeczy trzeba tłumaczyć... Od początku, powoli - napisałem ironicznie, że takie używanie PDO jest bez sensu ze względu na fakt, że takie wykonanie zapytania (uwaga, w przykładzie jest akurat insert, ale równie dobrze może być to select z parametrami!):
$insert = $this->pdo->exec('INSERT INTO `news` (`id`, `temat`, `news`) VALUES(NULL,\''.$_POST['temat'].',\''.$_POST['news'].'\')');
Nie różni się się absolutnie niczym od :
$insert = mysql_query('INSERT INTO `news` (`id`, `temat`, `news`) VALUES(NULL,\''.$_POST['temat'].',\''.$_POST['news'].'\')');
Teraz sendo sprawy, otóż dlaczego? Bo jedno i drugie zapytanie jest tak samo nieporęczne i tak samo podatne na wszelkiego rodzaju ataki lub nawet błędy programisty. Specjalnie kazałem użyć autorowi mysql_* by zwrócić jego uwagę na ten aspekt (czyli różnice pomiędzy jednym a drugim sposobem).
Biblioteka PDO ma kilka ciekawych i poręcznych narzędzi, które warto używać, przede wszystkim można stosować placeholdery w zapytaniach, np.:
INSERT INTO NEWS (id, temat, news) VALUES (?, ?, ?);
By podstawiane wartości zostały automatycznie dopasowane do kolumny, poprzez odpowiednie opakowanie w cudzysłowy, dodanie znaków ucieczki, itd. Czy to takie trudne do pojęcia?
Oczywiście, jeśli ktoś lubi, to może i tak jak poniżej, w końcu mamy demokrację. Tylko niech nie mówi, że jest to optymalne, a przede wszystkim poprawne zastosowanie.
$insert = $this->pdo->exec('INSERT INTO `news` (`id`, `temat`, `news`) VALUES(NULL,\''.$_POST['temat'].',\''.$_POST['news'].'\')');
To tak jak wbijanie gwoździ Samsungiem Galaxy, kiedy można to zrobić Nokią 3210.