0

我真的被困在这部分了。我已经尝试过并搜索过,但我的思绪正在爆炸,因为我无法弄清楚。

我在网上找到了这段代码,我想将每个数组分别存储在 MySQL 上。我需要如何拆分此数组并将每个值存储在 MySQL 中的代码。

这是它现在的输出: Array ( [domain] => dslb-094-219-040-096.pools.arcor-ip.net [country] => NL - Netherlands [state] => Saarland [town] => Schiffweiler )

但我想将 NL - 荷兰存储在 MySQL 表国家/地区。

有人可以帮我吗?

这是我找到的代码:

<?php
       $ip='94.219.40.96';
       print_r(geoCheckIP($ip));
       //Array ( [domain] => dslb-094-219-040-096.pools.arcor-ip.net [country] => DE - Germany [state] => Hessen [town] => Erzhausen )

       //Get an array with geoip-infodata
       function geoCheckIP($ip)
       {
               //check, if the provided ip is valid
               if(!filter_var($ip, FILTER_VALIDATE_IP))
               {
                       throw new InvalidArgumentException("IP is not valid");
               }

               //contact ip-server
               $response=@file_get_contents('http://www.netip.de/search?query='.$ip);
               if (empty($response))
               {
                       throw new InvalidArgumentException("Error contacting Geo-IP-Server");
               }

               //Array containing all regex-patterns necessary to extract ip-geoinfo from page
               $patterns=array();
               $patterns["domain"] = '#Domain: (.*?)&nbsp;#i';
               $patterns["country"] = '#Country: (.*?)&nbsp;#i';
               $patterns["state"] = '#State/Region: (.*?)<br#i';
               $patterns["town"] = '#City: (.*?)<br#i';

               //Array where results will be stored
               $ipInfo=array();

               //check response from ipserver for above patterns
               foreach ($patterns as $key => $pattern)
               {
                       //store the result in array
                       $ipInfo[$key] = preg_match($pattern,$response,$value) && !empty($value[1]) ? $value[1] : 'not found';
               }

               return $ipInfo;

       }

?>
4

2 回答 2

1

您可以将数组的每个部分单独保存到 mysql 数据库中,这应该不是问题。

你可以查看这个网站,了解如何从 php 中访问 mysql: http ://www.tizag.com/mysqlTutorial/mysqlinsert.php

并且 sql 插入查询应该有帮助:

mysql_query("INSERT INTO country (country) VALUES(".$ipInfo['country'].") ") 
于 2013-05-22T23:36:17.053 回答
0

对我来说,问题陈述有点模糊。如果它只是示例中引用的单个未嵌套数组,那么当您添加缺少的撇号时,Petros 的建议应该有效,这样您将拥有以下语句:

mysql_query("INSERT INTO country (country) VALUES('".$ipInfo['country']."') ") 

请注意在开始括号之后和结束括号之前添加的单引号。在 PHP 代码块中编写 SQL 语句时,我的偏好是使用如下的 heredoc 格式,这样我就可以看到 SQL 语句应该是什么(并用眼睛观察它是否缺少某些内容或有错别字):

$sql =<<<raw
INSERT INTO country (country)
VALUES ('%s');
raw;
mysql_query(sprintf($sql, $ipInfo['country']));

它更长,但它有助于使代码对我更易读。

如果您的数据是一个数组数组,那么您需要先创建一个国家数组,然后使用 implode 命令连接所有值。

于 2013-05-23T01:09:15.497 回答