Takto NE!
J0hny zhlavy napsal řešení pouze skoro dobře hlavní chyba je v těchto dvou řádcích
<?php
// nastavime promenou z formulare - neznam typ tvoji databaze, takze pro escapovani predpokladam mySql
$term = mysql_real_escape_string($_POST['search_term']);
// ziskame vysledek z db
$result = $pdo->query("SELECT * FROM tabulka WHERE sloupec LIKE '%" . $term . "%'")->fetchAll();
Špatné je používání mysql_ funkcí obecně, za a je to pouze pro mysql, a za bé občas nevracejí ideální výsledky. Navíc se míchají dvě různé databázové knihovny.
Srávně se to řeší pomocí prepared statement, takto:
<?php
// připraví se dotaz
$prepared= $pdo->prepare('SELECT * FROM table WHERE column LIKE :searchTerm');->fetchAll();
// provede se dotaz
$executed = $prepared->execute(array(':searchTerm' => '%'.$_POST['search_term'].'%'));
// zisk výsledků
$result = $executed->fetchAll();
Takto předávané parametry PDO ošetří samo (buď posláním jako parametry pro prepared statement, nebo z důvodů zpětné kompaktibility použitím escape funkce).
Používat tento způsob je tedy stejně bezpečný, navíc bývá rychlejší, databáze si prepared statement optimalizuje.