$suchart wird nicht in einen String- sondern einen Identifier-Kontext eingefügt. Für diesen gelten Regeln, die nicht von mysql_real_escape_string() berücksichtigt werden. Die Regel dazu findet man im MySQL-Handbuch im Kapitel zu den Schema Object Names, eine Funktion dafür stellt PHP (und auch die MySQL-Client-API) jedoch nicht zur Verfügung.
Stimmt! Du hast Recht!
Er sollte wenigstens die Backticks rauswerfen:
$suchart = str_replace('`','',$_POST['suchart']);
if ($suchart != $_POST['suchart']) {
die ('<h1>Ups!</h1><p>Das Programm weiß jetzt nicht so ganz genau, ob das ein Angriff werden sollte oder nur ein Tippfehler war. Gehen Sie zurück und versuchen Sie es ruhig noch einmal. Das Problem besteht aus Ihrer Eingabe für Suchart, die lautet "'.htmlspecialchars($_POST['suchart']).'" (Das Backtick "<b>`</b>" ist unzulässig.)</p>');
}
$suchbegriff = mysql_real_escape_string($_POST['suchebegriff']);
$abfrage = "SELECT * FROM `pruefung` WHERE `$suchart` LIKE '$suchbegriff'";
...
fred