问题描述
我无法在PHP中解码和插入数组数据。我尝试使用类似decode
和foreach
的功能,但没有任何效果。
$_POST['area']
数据:
[area] => [{"text":"DATA1"},{"text":"DATA2"},*,{"text":"DATA3"}]
我是PHP新手,如何使用pdo的准备好的语句将这些数据行插入数据库?
$area = $_POST['area'];
foreach ($area as $data) {
echo json_decode($data);
}
echo json_decode($area);
但是它不会回声。
最终,我想在其中使用数据:
$stmt = $con->prepare(INSERT INTO `table` (`areas`) VALUES(:data));
$stmt->execute(array($data));
解决方法
首先,由于*,
,您的json字符串无效。
$_POST['area'] = '[{"text":"DATA1"},{"text":"DATA2"},*,{"text":"DATA3"}]';
// uh oh,not valid json -----^^
因此,我假设这是一个发布错误,并使用以下输入数据运行:
$_POST['area'] = '[{"text":"DATA1"},{"text":"DATA3"}]';
这意味着在迭代$_POST['area']
之前,必须json_decode()
。 (Demo)
不变的准备好的语句应在进入循环之前声明为 -它被设计为一遍又一遍地使用。
将值绑定到占位符并执行查询将在循环内完成。
$stmt = $con->prepare(INSERT INTO `table` (`areas`) VALUES(?));
foreach (json_decode($_POST['area']) as $obj) {
$stmt->execute([$obj->text]);
}
,
您的json格式不正确。要COPY
,您需要正确的json格式
json_decode();
将其更改为
$post['area'] = [{"text":"DATA1"},{"text":"DATA3"}];
然后做
$post['area'] = [{"text":"DATA1"},{"text":"DATA3"}];
,
使用此:
$area = json_decode($_POST['area'],true);
您无法在PHP中回显数组。您必须使用var_dump()
函数。
祝你有美好的一天;)。