Esto se puede hacer con una consulta
SELECT * FROM `char` WHERE char_id = (SELECT char_id FROM rankpvp ORDER BY ratio DESC LIMIT 1)
Tenga en cuenta que char es una palabra reservada, por lo que deberá incluirse entre tildes. Tal vez este sea el problema real con el que te encontraste (error de sintaxis) en lugar de un problema con tu bucle while. Sin embargo, una consulta es la forma correcta