如何从提交的json字符串中向数据库中插入新行



我无法在PHP中解码和插入数组数据。我尝试过像decodeforeach这样的功能,但都不起作用。

$_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":"DATA2"},{"text":"DATA3"}]';

这意味着,在您可以迭代$_POST['area']之前,您必须先迭代json_decode()。(Demo(

一个不变的prepared语句应该在进入循环之前声明——它被设计为反复使用。

值到占位符的绑定和查询的执行将在循环内完成。

$stmt = $con->prepare(INSERT INTO `table` (`areas`) VALUES(?));
foreach (json_decode($_POST['area']) as $obj) {
$stmt->execute([$obj->text]);
}

您的json格式不正确。要执行json_decode();,您需要正确的json格式

$post['area'] = [{"text":"DATA1"},{"text":"DATA2"},*,{"text":"DATA3"}];

将其更改为

$post['area'] = [{"text":"DATA1"},{"text":"DATA2"},{"text":"DATA3"}];

然后进行

$ex = json_decode($data, true);

使用此:

$area = json_decode($_POST['area'],true);

你不能在PHP中回显数组。您必须使用var_dump()函数才能做到这一点。祝你今天过得愉快。

最新更新