Сталкнулся с такой пpоблемой! PHP: <? $dbhost = "localhost"; $dbuser = "test"; $dbpassword = "testp"; $dbname = "test"; $rec = $_GET['ip']; $idr = $_GET['id-data']; $link = mysql_connect($dbhost, $dbuser, $dbpassword); mysql_select_db($dbname, $link); $query = "REPLACE INTO `table` (ip,id-data) VALUES($rec,$idr)"; mysql_query($query, $link); $query = "SELECT * FROM bots"; $result=mysql_query($query); $number = mysql_num_rows($result); echo "$number"; mysql_close($link); ?> как видно из кода я получаю GET запpос и добавляю его в базу данных,все ок!НО если я пишу IP то не шлет...пpимеp: site.ru/file.php?ip=192.168.10.10&id-data=1 не шлет! site.ru/file.php?ip=1921681010&id-data=1 так шлет То есть не пускает точки!кто что посоветует??? Вот код базы PHP: CREATE TABLE `table` ( `ip` TEXT, `id-data` varchar(255), PRIMARY KEY (`ip`) );
eslj ya pravilno ponial, to tebe nado ispolzovat funkciu urlencode(). v skobkah, v kachestve argumenta, ukazivat peremennuu so znacheniem ip. a potom, to chto vozvratit eta funkcia, mozhno otpravlat get'om chtobi vernut prislannie dannie v normalnii vid - iispolzui funkciu urldecode() sory za translit(
PHP: <? $ip="192.168.0.1"; $ip=urlencode($ip); echo "<a href=\"dannie.php/?ip=$ip\">otoslat</a>"; ?> send.php: PHP: <? $dbhost = "localhost"; $dbuser = "test"; $dbpassword = "testp"; $dbname = "test"; $rec = urldecode($_GET['ip']); $idr = $_GET['id-data']; $link = mysql_connect($dbhost, $dbuser, $dbpassword); mysql_select_db($dbname, $link); $query = "REPLACE INTO `table` (ip,id-data) VALUES($rec,$idr)"; mysql_query($query, $link); $query = "SELECT * FROM bots"; $result=mysql_query($query); $number = mysql_num_rows($result); echo "$number"; mysql_close($link); ?>
snet, точки в url погоды не играют, у него происходит sql error потому что IP из-за точек воспринимается как число с плавающей точкой, а поле строковое. По хорошему нужно было преобразовывать ip в числа и хранить их в поле типа int, но для ТС это слишком сложно. Заключение значений в кавычки дает субд понять что ей дают строку, а не число с тремя точками. А без mysql_real_escape_string будет sql injection
В БД - `ip` - INT При вставке INSERT INTO `table` (`ip`,`id-data`) VALUES (INET_ATON('127.0.0.1'),'1')