Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.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-从主机名检索IP_Php_Ip_Host_Gethostbyname - Fatal编程技术网

PHP-从主机名检索IP

PHP-从主机名检索IP,php,ip,host,gethostbyname,Php,Ip,Host,Gethostbyname,我正在从一个表字段中检索值,并向其追加一个字符串以获得主机名列表。然后,我希望遍历所有主机名并返回每个主机的IP 以下代码获取我的主机名: $sql = "select * from table order by col1 asc"; $q = mysql_query($sql) or die(mysql_error() ." " . $sql); // Loop through table and append .zzz to each col1. while ($r = mysql_fe

我正在从一个表字段中检索值,并向其追加一个字符串以获得主机名列表。然后,我希望遍历所有主机名并返回每个主机的IP

以下代码获取我的主机名:

$sql = "select * from table order by col1 asc";

$q = mysql_query($sql) or die(mysql_error() ." " . $sql);

// Loop through table and append .zzz to each col1.
while ($r = mysql_fetch_array($q)) {

    $host_name = $r['col1']. ".zzz" . " ";

    //echo $host_name;
}
上面的代码正常工作,但我不确定如何检索每个主机名的IP。我一直在尝试gethostbyname,但无法使其正常工作。我知道我必须遍历主机名值。我会使用foreach循环吗?我已经试过了,但没法用。谁能给我一些指点吗

我尝试了以下操作,但没有返回任何结果:

$host_name_ip = $host_name;
foreach ($host_name_ip as $name) {
    $ip = gethostbyname($name);
    echo '<li>' . $ip. '</li>';
}

谢谢。:)

您正在覆盖初始循环中的
$host\u name
值。将其更改为数组,您的foreach将正常工作

while ($r = mysql_fetch_array($q)) {
    $host_name[] = $r['col1']. ".zzz";
}
要打印循环中的主机名及其地址,请使用:

foreach ($host_name_ip as $name) {
    $ip = gethostbyname($name);
    echo '<li>' . $name . ' is at address ' . $ip. '</li>';
}
foreach($host\u name\u ip as$name){
$ip=gethostbyname($name);
echo“
  • ”.$name.”位于地址“$ip”。
  • ”; }
    您甚至不需要将名称存储在数组中。只要在while循环中做你需要的一切

    while ($r = mysql_fetch_array($q)) {
        $ip = gethostbyname($r['col1']. ".zzz");
        echo '<li>' . $r['col1']. '.zzz' . ' is at address ' . $ip. '</li>';
    }
    
    while($r=mysql\u fetch\u数组($q)){
    $ip=gethostbyname($r['col1'].“.zzz”);
    回音“
  • ”。$r['col1']..zzz.”位于地址“$ip”。
  • ”; }
    您正在覆盖初始循环中的
    $host\u name
    值。将其更改为数组,您的foreach将正常工作

    while ($r = mysql_fetch_array($q)) {
        $host_name[] = $r['col1']. ".zzz";
    }
    
    要打印循环中的主机名及其地址,请使用:

    foreach ($host_name_ip as $name) {
        $ip = gethostbyname($name);
        echo '<li>' . $name . ' is at address ' . $ip. '</li>';
    }
    
    foreach($host\u name\u ip as$name){
    $ip=gethostbyname($name);
    echo“
  • ”.$name.”位于地址“$ip”。
  • ”; }
    您甚至不需要将名称存储在数组中。只要在while循环中做你需要的一切

    while ($r = mysql_fetch_array($q)) {
        $ip = gethostbyname($r['col1']. ".zzz");
        echo '<li>' . $r['col1']. '.zzz' . ' is at address ' . $ip. '</li>';
    }
    
    while($r=mysql\u fetch\u数组($q)){
    $ip=gethostbyname($r['col1'].“.zzz”);
    回音“
  • ”。$r['col1']..zzz.”位于地址“$ip”。
  • ”; }
    谢谢。现在它将返回值到页面,但返回主机名而不是IP。数据库中的
    col1
    列中有什么内容?如果是主机名,请删除我答案中=左侧的
    ]
    后面的所有内容(当然保留
    )。col1中每行有5个字母变量。在“zzz”后面加上我的主机名。(zzz只是一个示例)好的,然后删除
    。“
    .zzz
    之后。你不再需要/想要它了。我仍然有一些问题。它会返回我想要的IP,但我希望能够将每个主机名加上每个对应的IP打印到页面上。我好像没法让它工作。在我删除了“.”之后,它将不会打印主机名,正如您上次评论中建议的那样。此外,当ip显示在页面上时,每个ip前面都会显示单词“Array”。我想看“主机名-IP”,但现在我只看到了“Array111.111.11.11”,例如。谢谢。现在它将返回值到页面,但返回主机名而不是IP。数据库中的
    col1
    列中有什么内容?如果是主机名,请删除我答案中=左侧的
    ]
    后面的所有内容(当然保留
    )。col1中每行有5个字母变量。在“zzz”后面加上我的主机名。(zzz只是一个示例)好的,然后删除
    。“
    .zzz
    之后。你不再需要/想要它了。我仍然有一些问题。它会返回我想要的IP,但我希望能够将每个主机名加上每个对应的IP打印到页面上。我好像没法让它工作。在我删除了“.”之后,它将不会打印主机名,正如您上次评论中建议的那样。此外,当ip显示在页面上时,每个ip前面都会显示单词“Array”。我希望看到“主机名-IP”,但现在我只看到“Array111.111.11.11”,例如。