Detta kan göras med en fråga
SELECT * FROM `char` WHERE char_id = (SELECT char_id FROM rankpvp ORDER BY ratio DESC LIMIT 1)
Observera att röding är ett reserverat ord så det måste lindas in i bakre fästingar. Kanske är detta det faktiska problemet du stötte på (syntaxfel) snarare än ett problem med din while-loop. Ändå är en fråga rätt väg