如何从提交的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":"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()函数。 祝你有美好的一天;)。