Данные Varchar показывают результаты выборочно

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

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

Средняя строка – это то, как я ожидаю, что записи, которые будут поступать от переключателя, будут выглядеть. Первый и третий я поставил их для тестирования.

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

Solutions Collecting From Web of "Данные Varchar показывают результаты выборочно"

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

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

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

Попробуй это:-

 <?php $result = mysql_query( "SELECT ip,mac FROM arp_table where ip='".$var."'" ); $row = mysql_fetch_row( $result ); print_r( $row ); ?>