php - 将数组值转换为 longtoip

标签 php mysql json

我是一名 php/js 程序员新手,正在学习如何使用 php 和 MySQL 更高效地完成工作。我正在开展一个个人项目(一项自学练习),将服务器 IP 存储在数据库中。网络上的许多页面建议在 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
));

在 ipv4 字段中输入“192.168.1.1”的结果写入 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);

?>

非常感谢任何有关如何解决此问题的简单方法。

谢谢。

最佳答案

你试过这个吗..

while($row = mysql_fetch_object($rs)){
 $row->ipv4 = long2ip($row->ipv4);
 array_push($result, $row);

}

这通常会用新值更新 $row 对象。尝试让我知道这是否有效

关于php - 将数组值转换为 longtoip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16205395/

相关文章:

php - 如何在逗号分隔值字段中查找字符串的出现次数

javascript - 使用 JSON 构建层次结构树

Java json 响应以数值形式显示日期

php - TCPDF - 来自 mysql 的打印表显示重复的第一行

javascript - Ajax 响应文本不起作用

php - PHP 中的奇怪字符串

php - 如何在php中比较数组和数据库

python - 使用 AJAX 时 wtforms 验证不起作用

php - sql 查询,当我执行选择查询时,它加载了很长时间,它没有结果,它只是加载

mysql - sqlyog 将查询结果导出为 csv