我真的被这部分卡住了..我试着找了又找,但我的脑子都快炸开了,因为我搞不懂。
我在网上找到了这段代码,我想将每个数组分别存储在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: (.*?) #i';
$patterns["country"] = '#Country: (.*?) #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;
}
?>发布于 2013-05-23 07:36:17
您可以将数组的每个部分分别保存到mysql数据库中,这应该不是问题。
您可以查看此站点,了解如何在php:http://www.tizag.com/mysqlTutorial/mysqlinsert.php中访问mysql。
sql insert查询应该会有所帮助:
mysql_query("INSERT INTO country (country) VALUES(".$ipInfo['country'].") ") 发布于 2013-05-23 09:09:15
对我来说,问题陈述有点含糊。如果它只是示例中引用的单个非嵌套数组,那么Petros建议的方法应该有效,当您添加缺少撇号的时,您将得到以下语句:
mysql_query("INSERT INTO country (country) VALUES('".$ipInfo['country']."') ") 请注意,在开始paren之后和结束paren之前添加了单引号。在PHP代码块中编写SQL语句时,我更喜欢使用如下所示的heredoc格式,这样我就可以看到SQL语句应该是什么(并查看它是否遗漏了什么或是否有拼写错误):
$sql =<<<raw
INSERT INTO country (country)
VALUES ('%s');
raw;
mysql_query(sprintf($sql, $ipInfo['country']));它更长,但它使代码对我来说更易读。
如果您的数据是一个数组数组,那么您需要首先创建一个国家/地区数组,然后使用implode命令连接所有的值。
https://stackoverflow.com/questions/16703171
复制相似问题