我從一個頁面擷取到一個json字串,然後將它轉換為json數組再插入到資料庫中,但插進去的都是空值,我確定能擷取到json字串。
include_once('inc/conn.php');
$json_string=$_REQUEST["visitor"];
$addressInfo=json_decode( $json_string,TRUE);
$name=$addressInfo['name'];
$idcard=$addressInfo['idcrd'];
$visitedphone=$addressInfo['visitedphone'];
$address=$addressInfo['address'];
$visitedorganization=$addressInfo['visitedorganization'];
echo"1$visitedphone";
echo"2$address";
echo"3$visitedorganization";
$sql="insert into adress_list(name,idcrad,tel,adress,visitorganization)values('$name','$idcard','$visitedphone','$address','$visitedorganization'); ";
$rest=0;
$rest = mysql_query($sql);
echo mysql_error();
if($rest){
echo "恭喜,上傳成功!";
}else{
echo "上傳失敗,請重新上傳!";
}
//關閉資料庫
mysql_close($con);
?>
這是My Code 求大神指導,急求。。。
回複討論(解決方案)
print_r($addressInfo);
看一下
print_r($addressInfo); 是什麼結果
$addressInfo=json_decode( $json_string,TRUE);
如果是空,估計$json_string的值不是json格式,請檢查此處。
很可能是引號問題。需要轉義,否則的話SQL保錯。
$sql="insert into adress_list(name,idcrad,tel,adress,visitorganization)values('".mysql_real_escape_string($name)."','".mysql_real_escape_string($idcard)."','".mysql_real_escape_string($visitedphone)."','".mysql_real_escape_string($address)."','".mysql_real_escape_string($visitedorganization)."'); ";
$addressInfo;//這個值應該判斷下是否為空白 然後再執行下面的邏輯比較好吧
調試的時候$addressInfo;的值
要怎麼擷取其中的name,idcard等的值呀,我用$name = $addressInfo[0]['name'];會報錯
$name = $addressInfo['visitors'][0]['name']; 這樣才行。
數組是這樣的
$addressInfo = array( 'visitors' => array( array( 'visitedphone'' => '13333333333', 'organization' => '浙江大學', 'phone' => '13888888888', 'address' => '杭州市浙大路38號', 'name' => '張三', 'visitedname' => '李總', 'idcard' => '510181198209108435', 'visitedorganization' => '杭州網路科技有限公司' ), ));
你取數是這樣: $name=$addressInfo['name'];
顯然是不對了
少了一層 foreach 一下你就看到了
應該這樣寫
$addressInfo=json_decode( $json_string,TRUE);
$addressInfo=['visitors'][0];
一下是你原來的代碼
是不是你獲得的是對象object,不是數組array
$name = $addressInfo['visitors'][0]['name']; 這樣才行。
謝謝啊 這樣子就可以得到啦