Eu concordo que é um problema de cotação, mas aqui está como meu código ficaria.
$sql = 'SELECT * FROM SiteInfo WHERE Serial = "' . $serial . '"';
ou
$sql = "SELECT * FROM 'SiteInfo; WHERE 'Serial' = \"$serial\"";
$sql = 'SELECT * FROM SiteInfo WHERE Serial = "' . $serial . '"';
$sql = "SELECT * FROM 'SiteInfo; WHERE 'Serial' = \"$serial\"";
O que é o operador lógico BETWEEN no SQL Server - Tutorial SQL Server / TSQL Parte 124
Como obter a lista de restrições de verificação ativadas/desativadas no banco de dados SQL Server - Tutorial SQL Server/TSQL Parte 86
Como criar um campo calculado no Access
Agregando dados usando funções de grupo (agrupar por oráculo)