Странна стойност от intval?

azsym

New member
Как от това
PHP:
$а=intval('1249556849999999419015016')
се получава
$а=9223372036854775807

и как да се получи истинската стойност на низа по-горе?
 
Re: Странна стойност от intval?

9223372036854775807 ти е максималната Signed стойност за Int (Bigint) при 8 байта памет и просто няма числов тип, който да съхрани по-голяма.

Това ще участва ли в изчисления, че ти трябва като число?
 
Re: Странна стойност от intval?

9223372036854775807 ти е максималната Signed стойност за Int (Bigint) при 8 байта памет и просто няма числов тип, който да съхрани по-голяма.

Това ще участва ли в изчисления, че ти трябва като число?

трябва ми като стойност. дали число или текст май няма значение.
Но в текст в БД ме реже до '1249556849999999419', независимо, че съм му дал дължина 40, а то е по-малко.
Трябва ми това цялото да влезе в БД както си е, и да може да се търси по него.
 
Re: Странна стойност от intval?

PHP:
$а='1249556849999999419015016';

и полето в базата да не е int

пробвах и с чар 40 и с инт 40
не става. други идеи?
 
Re: Странна стойност от intval?

пробвах и с чар 40 и с инт 40
не става. други идеи?

varchar(40)

Ако си сигурен че само 40 ти трябват.
 
Re: Странна стойност от intval?

OK
низа с точност е 12495568499999990314190150160000000312

това са 38 символа.

В varchar(40) го реже до 1249556849999999031419015016

Защо? И това 40 е какво? Имам спомен, че е байтове, ако е така би трябвало да влезе.

Как да го вкарам цялото?
 
Re: Странна стойност от intval?

OK
низа с точност е 12495568499999990314190150160000000312

това са 38 символа.

Как да го вкарам цялото?

Това са 45 символа с varchar(50) примерно.
 
Последно редактирано:
Re: Странна стойност от intval?

Това са 45 символа с varchar(50) примерно.

ще пробвам, но как ги изкара 45 символа?
 
Re: Странна стойност от intval?

ще пробвам, но как ги изкара 45 символа?

Ами просто ги сложих в форма която брои с javascript не ми се играеше да ги броя с php иначе съм сигурен, че няма как да ги изкара по-малко то 🙂.
 
Re: Странна стойност от intval?

Ами просто ги сложих в форма която брои с javascript не ми се играеше да ги броя с php иначе съм сигурен, че няма как да ги изкара по-малко то 🙂.

аз бройх ръчно и с питон, и са 38 🙂

Както и да е - дори с варчар (60) пак не ги вкарва изцяло.
 
Re: Странна стойност от intval?

аз бройх ръчно и с питон, и са 38 🙂

Както и да е - дори с варчар (60) пак не ги вкарва изцяло.

Бре наистина са 38.

Ами принципно няма логика да не ги вкара в базата с vachar, но все пак пробвай в краен случай като чист текст text тогава вече няма как да не ги вкара.
 
Re: Странна стойност от intval?

Здравей,
направих си труда да си драсна един тест на php.
Всичко е както се очаква. Дай да видим какво си написал, може там да е проблема
Код:
create table large_test (
id int(11) unsigned primary key auto_increment,
val varchar(40)
);
PHP:
$mysqli = new mysqli('', '', '', '');
$stmt = $mysqli->prepare("INSERT INTO large_test (val) VALUES (?)");
$stmt->bind_param('s', $value);
$value = '12495568499999990314190150160000000312';
$stmt->execute();
Поздрави.
 
Re: Странна стойност от intval?

През phpmyadmina ги вкарва и като varchar , но дава предупреждение , ако се опитваш да ги вкараш през кода пробвай само да подтиснеш грешката на заявката с @mysql_query("insert into .........");
 
Re: Странна стойност от intval?

PHP:
$sql="INSERT into table (code_id) values ('12495568499999990314190150160000000312')";
$db->query($sql);
това във варчар(60)
и го реже.
 
Последно редактирано:
Re: Странна стойност от intval?

Какъв енкодинг ползваш? на полето и на конекцията?
Предполагам в phpmyadmin вече си пробвал и там работи коректно ?
 

Back
Горе