【问题标题】:Insert a Column of json Object to New Column via PHP通过PHP将一列json对象插入新列
【发布时间】:2017-07-07 18:49:24
【问题描述】:

我有一个 json 列,我想将 id 收集到一个带有 id2 名称的新列中。 这是一行 json 列

[{"id":"26","answer":[{"option":"3","text":"HIGH"}],"type":"a"},
 {"id":"30","answer":[{"option":"3","text":"LOW"}],"type":"b"},
 {"id":"31","answer":[{"option":"3","text":"LOW"}],"type":"c"}]

我的意思是如何将26,30,31 40,40,10 52,12,12 添加到新列。 我的表名是 user_survey_start 我的 json 列名是 survey_answersand My New id 列是 id2

<?php
$con=mysqli_connect("localhost","root","","arrayy");
// Check connection
if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql="SELECT `survey_answers` FROM `user_survey_start`";

if ($result=mysqli_query($con,$sql)) {
    while ($row = mysqli_fetch_row($result)) {
        $json = $row[0];
        $jason_array  = json_decode($json,true);

        // id   
        $id = array();
        foreach ($jason_array as $data){
            $id[] = $data['id'];
            // here code to insert/update values to db column
        }
        echo implode(',',$id)."</br>";
    }
}
mysqli_close($con);
?>

【问题讨论】:

  • 不清楚你在问什么。您想更新您的 JSON 对象以包含一个名为 id2 的新属性?
  • 我想将26,30,31 40,40,10 52,12,12 添加到新列
  • 您能否更新您的问题以包含您最终所需的输出,以便清楚。
  • 已更新.. 我想拆分 id 并放入新列
  • 你一直这么说,但我不明白你的意思。

标签: php mysql arrays json


【解决方案1】:

首先,你必须更新你的表架构,所以它会有一个名为id2的新列。

ALTER TABLE `user_survey_start` ADD `id2` VARCHAR(255) NOT NULL

如果您希望此列是可选的,您可以从NOT NULL 中删除NOT

然后您只需将这些 ID 从 JSON 插入到您新创建的 id2 列。

$id = implode(',', $id);
mysqli_query($con, "UPDATE `user_survey_start` SET `id2` = $id WHERE `id` = {$row['id']}");

【讨论】:

  • 我更新了我的表格并在 foreach 之后添加了你的代码,但是我有错误你能更正我的代码吗?
  • 注意:未定义索引:第 25 行 C:\wamp64\www\json\json.php 中的 id
  • mysqli_query 末尾的id 索引替换为您的id 列的名称。
  • 进入 phpMyAdmin,导航到 user_survey_start 表,转到 structure 并查看应该是 PRIMARY KEY 的第一列。将查询末尾的id 索引替换为该列的名称。
  • 我用我的列名更改了 id `mysqli_query($con, "UPDATE user_survey_start SET id2 = $id WHERE survey_answers = {$row['id']}"); ` 但我有错误
【解决方案2】:

使用此代码解决

         $id = array(); 
            foreach ($jason_array as $data) {
                            $id[] = $data['id'];
                        }
                        $ids= implode(',',$id);
                        $sql1="update user_survey_start set id2='$ids' where id_s=".$row[1];//run update sql
                        echo $sql1."<br>";
                        mysqli_query($con,$sql1);               
        // awnser2          
        $answers = array();
        foreach ($jason_array as $data) {
                foreach($data['answer'] as $ans){
                $answers[] =$ans['text'] ;
                }
        }
        $answers= implode(',',$answers);
        $sql3="update user_survey_start set awnser2='$answers' where id_s=".$row[1];//run update sql
        echo $sql3."<br>";
        mysqli_query($con,$sql3);                                                                           
      }
}

【讨论】:

    猜你喜欢
    • 2020-12-19
    • 2021-03-01
    • 2019-09-13
    • 2014-05-24
    • 1970-01-01
    • 2020-06-13
    • 2018-03-26
    • 1970-01-01
    • 2019-01-09
    相关资源
    最近更新 更多