Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将数组值转换为longtoip_Php_Mysql_Json - Fatal编程技术网

Php 将数组值转换为longtoip

Php 将数组值转换为longtoip,php,mysql,json,Php,Mysql,Json,我是一名php/js新手,正在学习如何使用php和MySQL更高效地工作。我正在做一个个人项目(自学练习),将服务器ip存储在数据库中。web上的许多页面都建议在MySQL中存储IPv4地址的最佳方法是使用整数字段并转换IPv4地址来存储它。这不是问题,这很容易做到 但是,我正在填充一个数据表,并以数组的形式将信息拉回来以填充每一行。当涉及数组时,我不知道如何使用longtoip将这些值转换回可读格式。您将在下面的输出部分看到我遇到的问题,web上的大多数示例都没有处理这种情况 请注意,我不关心

我是一名php/js新手,正在学习如何使用php和MySQL更高效地工作。我正在做一个个人项目(自学练习),将服务器ip存储在数据库中。web上的许多页面都建议在MySQL中存储IPv4地址的最佳方法是使用整数字段并转换IPv4地址来存储它。这不是问题,这很容易做到

但是,我正在填充一个数据表,并以数组的形式将信息拉回来以填充每一行。当涉及数组时,我不知道如何使用longtoip将这些值转换回可读格式。您将在下面的输出部分看到我遇到的问题,web上的大多数示例都没有处理这种情况

请注意,我不关心代码其余部分的安全性,我知道它需要一些工作,但我会在以后修复它(对于那些意识到这些事情的人)

输入:

$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
));
<?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);

?>
在ipv4字段中输入'192.168.1.1'的结果会在写入MySQL后生成结果'-1062731519'

输出:

$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
));
<?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对象。。试着让我知道这是否有效

它确实有效,只是我在函数语法上犯了一个小错误,它实际上是“long2ip”。感谢您的回复:)