【问题标题】:Specific database columns into an array将特定数据库列放入数组
【发布时间】:2012-12-12 10:46:02
【问题描述】:

原来,这个简单的数组和foreach语句可以完美运行,但我需要从php数组更改为从数据库中获取信息:

$serversArray = array(
    "domainname1.com",
    "domainname2.com:port",
    "domainname3.org",
    "000.000.000.000:port");

foreach($serversArray as $server)

.

ID    IP                Port
1     domainname1.com   
2     domainname2.com   12345
3     domainname3.org   
4     000.000.000.000   54321

我需要弄清楚的是如何将 IP 和 Port 列格式化为 ip:port(中间有冒号),然后让 foreach 语句识别每一个,以便它可以使用其他脚本对其进行处理,就像它已经与数组一起工作一样。 (我也尝试过在 foreach 中使用 sprintf,但这打破了页面。)

【问题讨论】:

  • 请显示您用于从数据库中检索信息的代码,以及您的 foreach 循环的其余部分。
  • 请参阅this SO question 以快速了解如何进行 sql 查询。
  • @DreamPhreak 那么您遇到什么错误会阻止页面加载?你为什么不分享你的代码以便发现任何问题?

标签: php mysql arrays formatting ip


【解决方案1】:

以下是让查询以正确格式返回的方法:

SELECT IF(`PORT` IS NULL, `IP`, CONCAT(`IP`,":",`PORT`)) as `Formatted IP`
FROM YOUR_TABLE;

【讨论】:

    【解决方案2】:

    您想从数据库查询构建 $serversArray 吗?

    $serversArray = array();
    $sql     = "SELECT ip, port FROM my_table";
    $result = mysql_query($sql);
    while ($row  = mysql_fetch_array($result))
    {
        // if have port include it after : otherwise just include ip
        $serversArray[] = $row['port'] ? "{$row['ip']}:{$row['port']}" : $row['ip'];
    }
    


    老式的 sql 查询只是为了显示构建数组的过程。目前我们应该使用MySQL Functions (PDO_MYSQL)

    【讨论】:

    • 这是完美的,foreach 语句和页面的其余部分可以正常工作,无需手动数组。我从来没有见过这样的东西,但是谢谢!
    • @dreamphreak 为你高兴,加油... :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-03
    • 1970-01-01
    • 2021-01-12
    • 1970-01-01
    • 1970-01-01
    • 2016-04-03
    • 2017-08-07
    相关资源
    最近更新 更多