Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблемы с записью массивов в таблицу
 
 автор: amigo62   (14.08.2007 в 10:46)   письмо автору
 
 

Здравствуйте, форумчане! Боюсь, без вас мне не разобраться. Вот такой код должен был создать таблицу и скинуть туда массивы по порядку:
<?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... Почему? Как нормально записать эти массивы в базу? Помогите пожалуйста! Заранее спасибо.

   
 
 автор: Medulla   (14.08.2007 в 13:05)   письмо автору
 
   для: 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"); 

   
 
 автор: Trianon   (14.08.2007 в 13:10)   письмо автору
 
   для: amigo62   (14.08.2007 в 10:46)
 

Диапазон представления целочисленного типа INT в MySQL -2^31.....2^31-1
2^31-1 = 2147483647
Все числа выше этого значения заменяются на правую границу.
Применяйте тип UNSIGNED либо BIGINT.
Однако помните, что у php тоже 32-битовое знаковое представление целочисленного типа.

   
 
 автор: amigo62   (14.08.2007 в 15:51)   письмо автору
 
   для: Trianon   (14.08.2007 в 13:10)
 

Спасибо. Я ничего не знал об этих типах полей. Кстати, unsigned- это сродни blob? Однако помните, что у php тоже 32-
битовое знаковое
представление
целочисленного
типа.
Какие это вносит ограничения? P.S. Каков верхний предел для поля с типом bigint?

   
 
 автор: cheops   (14.08.2007 в 16:46)   письмо автору
 
   для: amigo62   (14.08.2007 в 15:51)
 

>Кстати, unsigned- это сродни blob?
Нет, это означает, что поле не может иметь знака - беззнаковое значение, позволяет сместить объём из отрицательных областей в положительную.

>P.S. Каков верхний предел для поля с типом bigint?
9223372036854775807 для варианта со знаком и 18446744073709551615 для варианта без знака.

   
 
 автор: amigo62   (14.08.2007 в 18:40)   письмо автору
 
   для: Trianon   (14.08.2007 в 13:10)
 

Спасибо, буду знать. Теперь все отлично работает=)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования