我是一名新手php / js程序员,正在学习如何使用php和MySQL更高效地完成工作。我正在通过将服务器IP存储在数据库中来开展个人项目(自学习练习)。 Web上的很多页面都提出了在MySQL中存储IPv4地址的最佳方法是使用整数字段并转换IPv4地址来存储它。这不是问题,这很容易做到这一点。
但是我正在填充数据表,然后以数组的形式提取信息以填充每一行。我不知道如何在涉及数组时使用longtoip将这些值转换回可读格式。您将在下面的输出部分中看到我遇到的问题,网上的大多数示例都没有处理这种情况。
请注意我不关心其余代码的安全性,我知道它需要一些工作,但我会稍后解决(对于那些意识到这些事情的人)。
输入:
$name = $_REQUEST['name'];
$ipv4 = $_REQUEST['ipv4'];
$ipv6 = $_REQUEST['ipv6'];
$port = $_REQUEST['port'];
$username = $_REQUEST['username'];
$password =$_REQUEST['password'];
$ipv4 = ip2long($ipv4);
require 'conn.php';
$sql = "insert into servers(name,ipv4,ipv6,port,username,password) values('$name','$ipv4','$ipv6','$port','$username',$password)";
mysql_query($sql) or die(mysql_error());
//mysql_query($sql);
echo json_encode(array(
'id' => mysql_insert_id(),
'name' => $name,
'ipv4' => $ipv4,
'ipv6' => $ipv6,
'port' => $port,
'username' => $username,
'password' => $password
));
将'192.168.1.1'输入到ipv4字段后的结果会在写入MySQL后生成结果'-1062731519'。
输出:
<?php
require 'conn.php';
$rs = mysql_query('select * from servers');
$result = array();
while($row = mysql_fetch_object($rs)){
array_push($result, $row);
}
echo json_encode($result);
?>
非常感谢任何关于如何解决这个问题的简单方法。
感谢。
答案 0 :(得分:1)
while($row = mysql_fetch_object($rs)){
$row->ipv4 = long2ip($row->ipv4);
array_push($result, $row);
}
这通常用新值更新$ row对象..试试让我知道这是否有效