これは1つのクエリで実行できます
SELECT * FROM `char` WHERE char_id = (SELECT char_id FROM rankpvp ORDER BY ratio DESC LIMIT 1)
charは予約語であるため、バックティックでラップする必要があることに注意してください。これは、whileループの問題ではなく、実際に発生した問題(構文エラー)である可能性があります。それでも、1つのクエリが正しい方法です
これは1つのクエリで実行できます
SELECT * FROM `char` WHERE char_id = (SELECT char_id FROM rankpvp ORDER BY ratio DESC LIMIT 1)
charは予約語であるため、バックティックでラップする必要があることに注意してください。これは、whileループの問題ではなく、実際に発生した問題(構文エラー)である可能性があります。それでも、1つのクエリが正しい方法です