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

私にとって、問題のステートメントは少しあいまいです。例で引用されているように、ネストされていない単一の配列である場合、欠落しているアポストロフィを追加すると、次のステートメントが得られるようにペトロスがアドバイスしたことが機能するはずです。

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

開き括弧の後と閉じ括弧の前に一重引用符が追加されていることに注意してください。PHP コード ブロック内で SQL ステートメントを記述するときの私の好みは、次のようなヒアドキュメント形式を使用して、SQL ステートメントがどうあるべきかを確認できるようにすることです (そして、何かが欠けているか、タイプミスがあるかどうかを確認します)。

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

長くなりますが、コードが読みやすくなります。

データが配列の配列である場合、最初に国の配列を作成してから、implode コマンドを使用してすべての値を結合します。

于 2013-05-23T01:09:15.497 に答える