Как занести в базу многоразрядное число

fantazista

Новичок
Здравствуйте.
INT поддерживает 11 разрядов bigint 14. Мне нужно как минимум 15 чтоб поддерживало.
Текстом заносить не могу так как unique отмечаю это поле.
Вроде бы только VARCHAR помагает. Только он в таком формате 4.4444444444444E+14 числа заносит. Не знаю вообще правильно работает.
Кто подскажет как это можно сделать?
 

newARTix

Новичок
14? С каких пор?

А в формате "4.4444444444444E+14" не mysql заносит, VARCHAR это строка, какую строку в mysql передали, то и записалось (чаще всего :))
 

fantazista

Новичок
Возможно у меня сервер хреновый... (сборка wamp стоит). Но при занесении допустим 444444444444444 он заносит 44444444444440
А когда VARCHAR передаю 444444444444444 заносится 4.4444444444444E+14. Это означает он правильно работает?
 

Вурдалак

Продвинутый новичок
fantazista, ты передаёшь не 444444444444444, а 4.4444444444444E+14, поэтому так и заносится.
 

Фанат

oncle terrible
Команда форума
а не кажется, что так выводится. хотя нет. выводиться должно как раз строкой, а не числом.

в любом случае, замечание newARTix осталось незамеченным. предлагаю автору ещё раз внимательно посмотреть разрядность bigint-a
 

fantazista

Новичок
newARTix
Решил проверить на онлайн сервере все работает. По крайней мере 19 - разрядные поддерживает абсолютно все. Ну имеет максимум 20.
Хотел в этом случае узнать. Кто знает как мне исправить домашний хостинг, что бы тоже работал правильно (wampserver сборка). Хотя и не принципиально но все же.
И еще получается выше 20-х разрядов нельзя сохранить в базе. А если завтра facebook введет 21-разрядные uid...?
 

fantazista

Новичок
Вурдалак
После распечатки действительно увидел такое. А как можно его привести в ту форму в которой он должен находиться?
 

fantazista

Новичок
Вурдалак
Там никаких вычеслений не проводилось. Я тесты проводил и написал вот так.
PHP:
$uid = 555555555555555;
	$name = "John";
	$game = 0;
	$points = 0;
	// print $uid;
	$query = "INSERT INTO `pz_statistics` (`uid`, `name`, `game`, `points`) VALUES ('$uid', '$name', '$game', '$points')";
	mysql_query($query);
При распечатке показывает так же как и заносит в базу. Но тестируемое значение у него 555555555555555
 

Вурдалак

Продвинутый новичок
Короче, если константа — бери значение в кавычки/апострофы. Если проводятся вычисления, то используй bcmath/gmp. При попытке записать это как число прямо в PHP-коде или вычислении с помощью стандартных арифметических операторов младшие разряды чисел будут теряться.
 
Сверху