Varchar数据有选择地显示结果

时间:2013-09-04 10:34:07

标签: php mysql sql

我正在开发一个监控ip地址活动的应用程序。我在Ubuntu 12.04上使用LAMP堆栈。在mysql数据库中,我创建了一个包含2列ip和mac的表,两者都有数据类型varchar。我把一些数据放到表中,当我使用select * from table时,这就是结果

 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时,结果没问题,形式为1 Array([0] =&gt; 1 [1] =&gt; 2),当我输入8.9时,输出也正常。但是当我输入1.10.0.0.43时,输出只是变量的回显,没有检索到数组。任何人都知道为什么会这样?

2 个答案:

答案 0 :(得分:1)

这是因为您没有在$var周围使用引号。在SQL中使用字符串时,需要引用它们,例如:

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

如果没有引用它们,那么您的值将由MySQL解释,并将自动转换为(例如)integer,因为该值看起来像一个整数1 / 2。 ..等等。

答案 1 :(得分:0)

试试这个: -

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