|
|
|
| Здравствуйте, форумчане! Боюсь, без вас мне не разобраться. Вот такой код должен был создать таблицу и скинуть туда массивы по порядку:
<?php
include('config.php');
$dbhdl=mysql_connect($dbserver,$dbuser,$dbpassword);
mysql_select_db($dbname);
$act=mysql_query("CREATE TABLE IF NOT EXISTS ipnums (id_ipn int(10) NOT NULL auto_increment, start int(25), end int(25), id_ops int(5), PRIMARY KEY(id_ipn)) TYPE=MyISAM");
if($act) echo 'IPNUMS CREATE OK'; else echo mysql_error();
echo '<br/>';
$IP101 = array(2130706433,1402273792,1402277888,1402279936,1402281984,1402284032,1402286080,1402287104,3251233792,3582031776);
$IP201 = array(2130706687,1402275839,1402278911,1402280959,1402283007,1402285055,1402287103,1402288127,3251234815,3582031807);
$IP102 = array(1433657344,3648405504,3648406528,3648408576,3648409600,3648410624,3648411648,3648412672);
$IP202 = array(1433657599,3648406527,3648407551,3648409599,3648410623,3648411647,3648412671,3648413695);
for ($ix=0; $ix<count($IP101); $ix++)
{
$rec=mysql_query("INSERT INTO ipnums VALUES('','".$IP101[$ix]."','".$IP201[$ix]."','1')");
if($rec) echo $ix.'- ok'; else echo $ix.'- '.mysql_error();
echo '<br/>';
}
for ($ix=0; $ix<count($IP102); $ix++)
{
$rec=mysql_query("INSERT INTO ipnums VALUES('','".$IP102[$ix]."','".$IP202[$ix]."','2')");
if($rec) echo $ix.'- ok'; else echo $ix.'- '.mysql_error();
echo '<br/>';
}
mysql_close($dbhdl);
?>
| поясню: куски $IPXXX=array(.... взяты мной из скрипта, опознающего провайдеров по IP. Например,в $IP101 содержатся начальные числа сравнения, а в $IP201- конечные, и т.д, строка имеет вид
id-start_number-end_number-operator.
Но странное дело: из $IP101 и $IP201 не хотят попадать в базу две последние пары значений, и вместо них пишется невесть откуда взявшееся число 2147483647.Это же число пишется вместо всех значений элементов массивов $IP102 и $IP202... Почему? Как нормально записать эти массивы в базу? Помогите пожалуйста! Заранее спасибо. | |
|
|
|
|
|
|
|
для: amigo62
(14.08.2007 в 10:46)
| |
$act=mysql_query("CREATE TABLE IF NOT EXISTS ipnums (id_ipn BIGint(10) NOT NULL auto_increment, start BIGint(25), end BIGint(25), id_ops int(5), PRIMARY KEY(id_ipn)) TYPE=MyISAM");
|
| |
|
|
|
|
|
|
|
для: amigo62
(14.08.2007 в 10:46)
| | Диапазон представления целочисленного типа INT в MySQL -2^31.....2^31-1
2^31-1 = 2147483647
Все числа выше этого значения заменяются на правую границу.
Применяйте тип UNSIGNED либо BIGINT.
Однако помните, что у php тоже 32-битовое знаковое представление целочисленного типа. | |
|
|
|
|
|
|
|
для: Trianon
(14.08.2007 в 13:10)
| | Спасибо. Я ничего не знал об этих типах полей. Кстати, unsigned- это сродни blob? Однако помните, что у php тоже 32-
битовое знаковое
представление
целочисленного
типа.
Какие это вносит ограничения? P.S. Каков верхний предел для поля с типом bigint? | |
|
|
|
|
|
|
|
для: amigo62
(14.08.2007 в 15:51)
| | >Кстати, unsigned- это сродни blob?
Нет, это означает, что поле не может иметь знака - беззнаковое значение, позволяет сместить объём из отрицательных областей в положительную.
>P.S. Каков верхний предел для поля с типом bigint?
9223372036854775807 для варианта со знаком и 18446744073709551615 для варианта без знака. | |
|
|
|
|
|
|
|
для: Trianon
(14.08.2007 в 13:10)
| | Спасибо, буду знать. Теперь все отлично работает=) | |
|
|
|