Это потому, что когда у вас есть имя с '
, ваш запрос выглядит так:
"SELECT * from position WHERE spieler='D'Angelo'"
, что неверно, поэтому $ dbh-> query возвращает false, что является недопустимым аргументом для foreach. Чтобы быстро исправить, вам нужно изменить запрос с
"SELECT * from position WHERE spieler='$playername'"
до
"SELECT * from position WHERE spieler='" . addslashes($playername) . "'"
что даст вам
"SELECT * from position WHERE spieler='D\'Angelo'"
Как уже указывалось, вам лучше справиться с подготовленными утверждениями:
$stmt = $dbh->prepare("SELECT * from position WHERE spieler=:playername"
$stmt->execute(array(':playername' => $playername));
while ($row = $dbh->fetch_assoc()) {
echo ''.$row['pos'].'</td></tr>';
}