Я разрабатываю приложение для мониторинга активности 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, выход является только эхом переменной, а массив не извлекается. Кто-нибудь с идеей, почему это так?
Это потому, что вы не используете кавычки вокруг $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 ); ?>