No proszę Ciebie, nie mów, że nie ma różnicy pomiędzy danymi liczbowymi a tekstowymi trzymanymi w bazie

Aż pomyślałem, że pokaże na najprostszym przykładzie:
Tabela z danymi w BIGINT:
--
-- Struktura tabeli dla `test2`
--
CREATE TABLE IF NOT EXISTS `test2` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`test` bigint(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
--
-- Zrzut danych tabeli `test2`
--
INSERT INTO `test2` (`id`, `test`) VALUES
(1, 8223372036854775807),
(2, 9);
Tabela z danymi w VARCHAR:
--
-- Struktura tabeli dla `test3`
--
CREATE TABLE IF NOT EXISTS `test3` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`test` varchar(64) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
--
-- Zrzut danych tabeli `test3`
--
INSERT INTO `test3` (`id`, `test`) VALUES
(1, '8223372036854775807'),
(2, '9');
Jak widać dane są takie same w dwóch tabelach. Spróbuj teraz wykonać na obu tabelach takie zapytanie:
SELECT * FROM testX ORDER BY test
Jeśli nie widzisz różnicy w wynikach to przykro

Każdy typ zmiennych w php ma swój odpowiednik w MySQL i tego się należy trzymać i nie kombinować, w końcu po coś zostało to wymyślone.