我想從json.stringify中插入數據庫中的一些數據。尤其我執行以下操作:json.stringify轉換爲數組php不插入到mysql
$('#get-checked-data').on('click', function(event) {
event.preventDefault();
var checkedItems = [];
$("#check-list-box li.active").each(function() {
var $this = $(this);
var checkedItem = { subarea: $this.attr('data-value') };
checkedItems.push(checkedItem);
});
var lawcase = JSON.stringify(checkedItems);
$('#display-json').html("<input type='text' name='case' value='" +
lawcase + "' readonly >");
});
});
從json.stringify值看起來像這樣:
[{ 「分區」: 「1」},{ 「分區」: 「2」}]
我選擇數據並通過POST發送給處理信息的類。
$user->case=$_POST['case'];
然後我操縱數據將字符串轉換成一個數組:
$query = 'INSERT INTO subarea (id,subarea_id,area_id) VALUES (:a,:b,:c)';
$usercase=$this->case;
$check=json_decode($usercase,true);
$stmt = $this->conn->prepare($query);
和陣列看起來像這樣,對我來說這似乎是不正確,但我是新進入陣列和並不怎麼(1){[0] => array(1){[「subarea」] => string(1)「1」} [1] =>數組(1){[ 「subarea」] => string(1)「2」}}
最後我運行foreach到inser噸
$stmt = $this->conn->prepare($query);
foreach($check as $key => $item)
{
$stmt->bindValue(':a',$this->user_id) ;
$stmt->bindValue(':b', $item['subarea']);
$stmt->bindValue(':c', $areavalue);//This comes from another variable, don't pay atention.
$stmt->execute();
}
但我接收到通知:Array對字符串的轉換在$ stmt-> bindValue( ':B',$項);線。我已嘗試幾乎所有的real_escape_string,編碼,解碼所有內容,但仍然收到不成功的輸出結果。我檢查了stackflow和其他網站,手冊和我想念的東西,不讓我解決問題。
希望有人能幫助我,提前謝謝。
編輯:該代碼是正確的,我使用共享服務器和問題來自該服務器的配置。謝謝你的回覆。
我也試過,問題是數據庫收到雙重結果。我相信問題出在我用json_decode($ usercase,true)構建的數組中;但我不知道如何解決這個問題。 – lostintheriver
問題可能來自[「subarea」] => string(1)「1」。特別是從字符串(1)? – lostintheriver
我相信它正在做所期望的事情,因爲你有兩個數組元素,它會遍歷它們並執行語句兩次,一次是分區=> 1,一次是分區=> 2。 –