3 回答
TA贡献1798条经验 获得超7个赞
我认为你需要类似的东西:
$store = array();
foreach ($_POST['data'] as $key => $value)
{
if($value[1] == "page_keywords")
$store[] = array($value[1] => $value[2]);
else
$store[] = array($value[1] => trim($value[2]));
}
$save = json_encode($store);
甚至(如果您的 $value[1] 在循环中始终是唯一的)
$store = array();
foreach ($_POST['data'] as $key => $value)
{
if($value[1] == "page_keywords")
$store[$value[1]] = $value[2];
else
$store[$value[1]] = trim($value[2]);
}
$save = json_encode($store);
然后使用 $save 存储在您的表中。不过,我不是 100% 的。
TA贡献1793条经验 获得超6个赞
您显示的字符串不是有效的 JSON。如果您想以 JSON 格式存储类似的对象列表,则它们需要位于数组中,并用逗号分隔。否则,它们只是不相关的单个对象,不能被解码为单个 JSON 块。
因此,您需要在 PHP 中构建一个数组,然后在最后对整个内容进行编码。像这样的东西:
$storedata = array();
foreach ($_POST['data'] as $key => $value)
{
if($value[1] == "page_keywords")
$storedata[] = array($value[1] => $value[2]);
else
$storedata[] = array($value[1] => trim($value[2]));
}
$jsondata = json_encode($storedata);
然后$jsondata在你的 SQL 语句中使用。
TA贡献1827条经验 获得超9个赞
您的问题是您“保存”到数据库。您将每个键值对编码为自己的 json 字符串并连接这些 json 字符串。
你的片段
foreach ($_POST['data'] as $key => $value)
{
if($value[1] == "page_keywords")
$store .= json_encode(array($value[1] => $value[2]));
else
$store .= json_encode(array($value[1] => trim($value[2])));
}
产量$store = "{key1:value1}{key2:value3}{key3:value3}"。请注意所有的括号,您的字符串中有 3 个不同的 json 对象,其中包含一个键值对,而不是一个具有 3 个键值对的 json 对象。
但是,我假设您想要一个带有键值对的单个 json 对象,结果如下所示?
$store = "{
key1:value1,
key2:value2,
key3:value3
}";
如果是这样,您需要以不同的方式构建阵列:
$store = array();
foreach ($_POST['data'] as $key => $value)
{
if($value[1] == "page_keywords")
$store[$value[1]] = $value[2];
else
$store[$value[1]] = trim($value[2]);
}
请注意,为了每个人的安全,您的代码容易受到 sql-injections 的攻击。请也解决这个问题。
- 3 回答
- 0 关注
- 159 浏览
添加回答
举报