2013-09-04 2 views
0

Я разрабатываю приложение для мониторинга активности IP-адреса. Я использую стек LAMP на Ubuntu 12.04. В базе данных mysql я создал таблицу с двумя столбцами, ip и mac, оба имеют тип данных varchar. я положил некоторые данные в таблицу и, когда я использую выберите * из таблицы, это результатvarchar datatype не показывает результат для длинных записей

ip     mac 
1      2 
1.10.0.0.43  00 19 78 D3 R5 ED 
8.9     32.22 

В среднем ряду, как я ожидаю, что записи, которые придут от переключателя, чтобы посмотреть like.The первый и третий Я поставил их для тестирования.

Я написал PHP код, чтобы сделать согласование и поиск, и это выглядит следующим образом

<?php 

    $var = $_REQUEST['IP'];  
    echo $var; 

    mysql_connect("localhost", "root", "mysql") or die("Unable to connect to the database"); 
    mysql_select_db("syslog"); 

    $result = mysql_query("SELECT ip,mac FROM arp_table where ip=$var" ); 

    $row = mysql_fetch_row($result); 

    print_r($row); 

?> 

, когда я ввести 1 на форме, то результат будет нормально, в форме 1 Array([0]=>1[1]=>2) и когда я войти 8.9, выход тоже нормально. Но когда я вхожу в 1.10.0.0.43, выход является только эхом переменной, а массив не извлекается. Кто-нибудь с идеей, почему это так?

ответ

0

Это потому, что вы не используете котировки вокруг $var. При использовании строк в SQL они должны быть указаны такие, как:

SELECT ip,mac FROM arp_table where ip='$var'; 

Если они не указаны, то ваше значение будет интерпретироваться MySQL и будет автоматически преобразуются в (например) integer, потому что значение выглядит как целое число 1/2 ... и т.д ..

0

кавычки $ вар объявить VARCHAR datatyp

$result = mysql_query("SELECT ip,mac FROM arp_table where ip='".$var."'" ); 

он работал с двумя другими значениями, поскольку они интерпретируются как целое или поплавка datatypes

Смежные вопросы