2011-12-30 51 views
-1

我可以使用INET_ATON函数在数据库中存储IP地址,但我无法通过INET_NTOA将其转换回另一种方式。无法使用INET_NTOA回显行

我的SQL语句如下..

$sql="SELECT `subnet_id`, INET_NTOA(`address`), `default_gateway`, `notes`, `site_id`, `user_id`, `mask_id` FROM `subnets`"; 

时,直接输入到phpMyAdmin的..这工作。

但是尝试使用以下两种方法,我发现了相应的错误呼应地址行时:

<td class="viewDataWidth"><?php echo INET_NTOA($rows['address']); ?></td> 

Fatal error: Call to undefined function INET_NTOA() in 



<td class="viewDataWidth"><?php echo $rows['INET_ntoa(address)']; ?></td> 

Notice: Undefined index: INET_ntoa(address) 

我可以附和地址行(无翻译),但我认为我不是正确使用INET_NTOA函数。我使用试验和错误对它进行了一些混乱,似乎无法获得任何地方。

有没有人有任何想法?

感谢

+0

可能重复[致命错误:调用未定义的函数INET_ATON()](http://stackoverflow.com/questions/8670221/fatal-error- call-to-undefined-function-inet-aton) – 2011-12-30 13:36:03

+0

你之前已经发布了这个问题,并且接受了你似乎并不了解的答案。您需要了解PHP和SQL是*不同的语言*。 – 2011-12-30 13:38:53

+0

我明白他们是不同的语言。当我直接使用SQL语句时,它会将我的地址行重命名为'INET_NTOA('address')',因此我只是试图回显那一行。 – Bernard 2011-12-30 13:46:07

回答

1

改变你的SQL中使用别名,如:

$sql="SELECT `subnet_id`, INET_NTOA(`address`) AS inet, `default_gateway`, `notes`, `site_id`, `user_id`, `mask_id` FROM `subnets`"; 

,然后你应该能够使用

<td class="viewDataWidth"><?php echo $rows['inet']); ?></td> 

的第一次尝试没有去取场因为你试图调用一个php函数“INET_NTOA”而不是从mysql函数中检索结果。你可以做到这一点,但在PHP这个函数被称为'ip2long'

+0

太棒了!谢谢,这完美地工作。非常感谢您的简单修复! – Bernard 2011-12-30 13:47:32