Я извлекаю значения из поля таблицы и добавляю к нему строку, чтобы получить список имен хостов. Затем я хотел бы перебрать все имена хостов и вернуть 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>';
}
Я тоже попробовал это … опять же ничего
foreach($host_name as $url) {
$ip = gethostbyname(trim($url));
}
echo $ip;
Благодарю. 🙂
Вы перезаписываете значение $host_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>';
}
Вам даже не нужно хранить имена в массиве. Просто делайте все, что вам нужно в вашем цикле.
while ($r = mysql_fetch_array($q)) {
$ip = gethostbyname($r['col1']. ".zzz");
echo '<li>' . $r['col1']. '.zzz' . ' is at address ' . $ip. '</li>';
}
Других решений пока нет …