我正在尝试从json.stringify向数据库插入一些数据。特别是我做了以下几点:
$('#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);
并且数组看起来像这样,对我来说它似乎不正确但我是新的数组而不是如何解决这个错误:
array(2){[0] =&gt; array(1){[“subarea”] =&gt; string(1)“1”} [1] =&gt; array(1){[“subarea”] =&gt; string(1)“2”}}
最后我运行foreach来插入
$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();
}
但是我在$ stmt-&gt; bindValue(':b',$ item)中收到了Notice:Array to string conversion;线。我已经尝试了几乎所有的real_escape_string,编码,解码所有的东西,但我仍然得到一个不成功的输出。我已经检查了stackflow和其他网站,手册和我遗漏的东西不能让我解决问题。
希望有人可以帮助我,提前谢谢你。
编辑:代码是正确的,我使用共享服务器,问题来自本服务器的配置。谢谢你的回应。
答案 0 :(得分:0)
您需要引用子区域密钥,例如$ item [&#39; subarea&#39;]而不是数组本身,否则它会为数组提供字符串转换错误。