Duas coisas:
1.Alterar
echo "<select name='train_name' id='train_name' multiple='multiple'>";
para
echo "<select name='train_name[]' id='train_name' multiple='multiple'>";
2.Alterar
function getAllAssoc() {
$sql = "SELECT * FROM train_information WHERE train_name = :train_name";
$sth = $this->pdo->prepare($sql);
$sth->bindParam(":train_name", $_POST["train_name"]);
$sth->execute();
return $sth->fetchAll();
}
para
function getAllAssoc() {
$sql = "SELECT * FROM train_information WHERE train_name IN(:train_name)";
$sth = $this->pdo->prepare($sql);
$sth->bindParam(":train_name", implode(",",$_POST["train_name"]));
$sth->execute();
return $sth->fetchAll();
}
Basta ajustar as aspas na consulta, pois não testei esse código e sinto que haverá um problema com aspas simples.
O que é feito acima é que pegamos as entradas em uma matriz e, consequentemente, buscamos os resultados com base nessa entrada de matriz.
Espero que tenha entendido!!