拆分PHP数组并存储在MySQL中

时间:2013-05-22 23:23:56

标签: php mysql arrays

我真的被这个部分困住了......我已经尝试过但我的思绪正在爆炸,因为我无法弄明白。

我在网上找到了这段代码,我想分别在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;

       }

?>

2 个答案:

答案 0 :(得分:1)

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

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

和sql insert查询应该有帮助:

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

答案 1 :(得分:0)

对我而言,问题陈述有点模糊。 如果它只是示例中引用的单个unnested数组,那么当您添加缺少的撇号时,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命令连接所有值。