Basta escrever suas consultas para que elas não usem campos numéricos como se fossem textuais.
Se
id
é um campo numérico, então seu where
cláusula nunca pode ser útil. Sim, seria bom se o MySQL reclamasse ativamente sobre isso - mas fundamentalmente você não deveria estar escrevendo código que executa consultas ruins para começar. Como essa consulta entrou em seu sistema? É o
'asdf'
parte da entrada direta do usuário? Você pode usar SQL parametrizado em vez disso? Se você realmente pretende para consultar um campo numérico, certifique-se de que sua entrada é numérica primeiro. Converta o texto para um inteiro em seu código de chamada, não no banco de dados.