首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拆分PHP数组并存储在MySQL中

问拆分PHP数组并存储在MySQL中
EN

Stack Overflow用户
提问于 2013-05-23 07:23:56
回答 2查看 279关注 0票数 0

我真的被这部分卡住了..我试着找了又找,但我的脑子都快炸开了,因为我搞不懂。

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

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

但我想将NL -荷兰存储在例如MySQL表国家中。

有谁能帮帮我吗?

下面是我找到的代码:

代码语言:javascript
复制
<?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;

       }

?>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-23 07:36:17

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

您可以查看此站点,了解如何在php:http://www.tizag.com/mysqlTutorial/mysqlinsert.php中访问mysql。

sql insert查询应该会有所帮助:

代码语言:javascript
复制
mysql_query("INSERT INTO country (country) VALUES(".$ipInfo['country'].") ") 
票数 1
EN

Stack Overflow用户

发布于 2013-05-23 09:09:15

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

代码语言:javascript
复制
mysql_query("INSERT INTO country (country) VALUES('".$ipInfo['country']."') ") 

请注意,在开始paren之后和结束paren之前添加了单引号。在PHP代码块中编写SQL语句时,我更喜欢使用如下所示的heredoc格式,这样我就可以看到SQL语句应该是什么(并查看它是否遗漏了什么或是否有拼写错误):

代码语言:javascript
复制
$sql =<<<raw
INSERT INTO country (country)
VALUES ('%s');
raw;
mysql_query(sprintf($sql, $ipInfo['country']));

它更长,但它使代码对我来说更易读。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16703171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档