$suquery=$dbCon->prepare("select * from Table where ? LIKE ?");
Nie będzie działać zgodnie z oczekiwaniami. Zostanie przetłumaczony jako:
SELECT * from table WHERE 'columnName' LIKE '%a%'
który zwraca wszystkie wiersze, ponieważ „nazwakolumny” zawiera „a”. 'columnName' to ciąg, a nie rzeczywista nazwa kolumny.
Twoja druga próba jest prawidłowa, z wyjątkiem dodatkowego cudzysłowu w terminie. Używając parametrów, nie potrzebujesz żadnych cudzysłowów. Rozwiązaniem jest:
$term = "%".$_POST['searchTerm']."%";
$suquery=$dbCon->prepare("select * from Table where columnName LIKE ?");
$suquery->bind_param('s', $term);
$suquery->execute();