> 백엔드 개발 > PHP 튜토리얼 > php foreach问题,在线等

php foreach问题,在线等

WBOY
풀어 주다: 2016-06-23 13:46:38
원래의
859명이 탐색했습니다.

PC客户端POST如下json数据至后台,json result数组中的数据条目不固定,有时是1组,有时是3组,可能更多。
如:json result 数组中1组数据
{
   "result" : [
      {
         "old_ip" : "61.141.251.21",
         "new_ip" : "61.141.251.22",
         "urldata" : "img1.taobao.com\r",
         "normal" : "100",
         "error" : "102",
         "agent" : "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)\r"
      }
   ]
}

如:json result 数组中3组数据
{
   "result" : [
      {
 "old_ip" : "61.141.251.23",
         "new_ip" : "61.141.251.24",
         "urldata" : "img1.taobao.com\r",
         "normal" : "100",
         "error" : "102",
         "agent" : "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)\r"
      },
      {
 "old_ip" : "61.141.251.25",
         "new_ip" : "61.141.251.26",
         "urldata" : "img2.taobao.com\r",
         "normal" : "100",
         "error" : "102",
         "agent" : "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)\r"
      },
      {
 "old_ip" : "61.141.251.27",
         "new_ip" : "61.141.251.28",
         "urldata" : "img3.taobao.com\r",
         "normal" : "100",
         "error" : "102",
         "agent" : "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)\r"
      }
   ]
}

数据表:
CREATE TABLE `result` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `old_ip` varchar(100) NOT NULL,
  `new_ip` varchar(100) NOT NULL,
  `urldata` varchar(100) NOT NULL,
  `normal` varchar(10) NOT NULL,
  `error` varchar(10) NOT NULL,
  `agent` varchar(100) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

后台接收PHP代码:
$result=$_POST["result"]; 
$arr=json_decode($result,true);

?>

请教各位专家,如何使用foreach取出$arr中的数据,并写入数据库(需考虑result数据条目不固定的问题),格式如下,求完整代码!合适可加分!
id old_ip           new_ip         urldata          normal  error  agent
1  61.141.251.21    61.141.251.22  img1.taobao.com  100     102    Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)
2  61.141.251.23    61.141.251.24  img2.taobao.com  100     102    Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)


回复讨论(解决方案)

print_r($arr); 是什么结果

$result=$_POST["result"]; $arr=json_decode($result,true);$arr=$arr['result'];if($arr){	foreach($arr as $val){		$val = array_map('mysql_real_escape_string',$val);		$str = "'".implode("','", $val)."'";		$sqlstr = "insert into result(old_ip,new_ip,urldata,normal,error,agent) values(".$str.")";		echo $sqlstr.'<br>';		mysql_query($sqlstr) or die(mysql_error());	}}
로그인 후 복사

太感谢fdipzone版主了,还有一个问题,请指点:
result数据表增加user_ip列,增加后的表结构如下,但user_ip字段数据不是从json result数组中获取,是从php后台变量$user_ip中获取。
问题:如何在使用foreach取出$arr中的数据,并写入result数据表的时候,把$user_ip变量中的数据也同时写入result数据表中。
增加后的表结构:
id old_ip new_ip urldata normal error agent user_ip

$user_ip=get_userip(); //通过get_userip()函数获取,如:111.23.11.13
$arr=json_decode($result,true);
$arr=$arr['result'];

if($arr){
foreach($arr as $val){
$val = array_map('mysql_real_escape_string',$val);
$str = "'".implode("','", $val)."'";
$sqlstr = "insert into result(old_ip,new_ip,urldata,normal,error,agent) values(".$str.")";
$sqlstr = "insert into result(user_ip) values("$user_ip")"; //尝试这样之后,php报错了
echo $sqlstr.'
';
mysql_query($sqlstr) or die(mysql_error());
}
}

$user_ip=get_userip();$result=$_POST["result"];  $arr=json_decode($result,true);$arr=$arr['result']; if($arr){    foreach($arr as $val){    	$val['user_ip'] = $user_ip;        $val = array_map('mysql_real_escape_string',$val);        $str = "'".implode("','", $val)."'";        $sqlstr = "insert into result(old_ip,new_ip,urldata,normal,error,agent,user_ip) values(".$str.")";        echo $sqlstr.'<br>';        mysql_query($sqlstr) or die(mysql_error());    }}
로그인 후 복사

谢谢fdipzone版主的帮助,问题解决了,结帖。

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿