我不知道为什么在我的表中插入值不能使用foreach来遍历Json对象..当我看到表时,字段是空的。为什么不从Json对象插入数据?
JSON对象(从jquery.ajax)
[{"marca":"Cisco","producto":"UCS","subproducto":"Nexus"},"marca":"Citrix","producto":"Networking","subproducto":"Netscaler"}]
的print_r($数据)
Array
(
[0] => Array
(
[marca] => Cisco
[producto] => UCS
[subproducto] => Nexus
)
[1] => Array
(
[marca] => Citrix
[producto] => Networking
[subproducto] => Netscaler
)
)
PHP代码
$data = json_decode($this->dataNewPoliza['alcances'], true);
$marca;
$producto;
$subproducto;
$sqlAlc = "INSERT INTO t_poliza_alcanceproductos VALUES (:idp,:m,:p,:s)";
$resultAlc = $this->dbConnect->prepare($sqlAlc) or die ($sqlAlc);
foreach ($data as $key => $value) {
foreach ($value as $mps => $valuemps) {
if($mps == 'marca') {
$marca = $valuemps;
}
if($mps == 'producto') {
$producto = $valuemps;
}
if($mps == 'subproducto') {
$subproducto = $valuemps;
}
}
$resultAlc->bindValue(':idp',$id_poliza,PDO::PARAM_INT);
$resultAlc->bindValue(':m',$marca,PDO::PARAM_INT);
$resultAlc->bindValue(':p',$producto,PDO::PARAM_INT);
$resultAlc->bindValue(':s',$subproducto,PDO::PARAM_INT);
if(!$resultAlc->execute()) {
return false;
} else {
return true;
}
}
希望得到一些帮助。
解决
的问题是,我不能这样做返回的foreach内假性还是真性和说@zerkms,我不需要嵌套循环,这是最终的结果:
$data = json_decode($this->dataNewPoliza['alcances'], true);
$sqlAlc = "INSERT INTO t_poliza_alcanceproductos VALUES (:idp,:m,:p,:s)";
$resultAlc = $this->dbConnect->prepare($sqlAlc) or die ($sqlAlc);
foreach ($data as $key => $value) {
$resultAlc->bindValue(':idp',$id_poliza,PDO::PARAM_INT);
$resultAlc->bindValue(':m',$value['marca'],PDO::PARAM_INT);
$resultAlc->bindValue(':p',$value['producto'],PDO::PARAM_INT);
$resultAlc->bindValue(':s',$value['subproducto'],PDO::PARAM_INT);
$resultAlc->execute();
}
return true;
感谢您的帮助!
发现'$值“马卡报”]',你嵌套循环做什么是无稽之谈 – zerkms
我zerkms同意也是它正常的$ id_poliza未设置在我们的代码(可能设置在前面没有?) – charly
可以给我一个你如何能做得更好的例子吗?是的,$ id_poliza在该代码之前声明。 – SoldierCorp