首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP$_POST[][]二维数组到json_encode添加额外的单引号

PHP$_POST[][]二维数组到json_encode添加额外的单引号
EN

Stack Overflow用户
提问于 2020-08-07 07:00:52
回答 1查看 86关注 0票数 1

问题是,我给表单元素命名如下(突出显示):

我的表单中有数组的集合。现在,我想将这些数组保存在具有json dataType的MySql数据库表中(在PHPDO中使用MySQL v-8 )。为此,我使用了以下函数将我的$_POST数组转换为json数组:

代码语言:javascript
复制
  $case = json_encode($_POST['case']);

它工作得很好,并在我的表的列中保存记录,但是它以下列方式存储密钥的问题是:

在上面的快照中,您可能会看到每个都被双引号包围,然后用单引号括起来。

我需要用json列保存相同的记录,但不需要在单引号之后保存双引号

我做错了什么?上述从$_POST‘’case‘数组转换为json数组的Php代码如下所示:

代码语言:javascript
复制
    ......
    $case = json_encode($_POST['case']);
    $ret = json_encode($_POST['ret']);
    $discussion = $_POST['discussion'];
    $next_appointment_date = $_POST['next_appointment_date'];
    $remarks = isset($_POST['remarks']) && !empty($_POST['remarks']) ? trim($_POST['remarks']):'';
    $signature = isset($_POST['signature']) && !empty($_POST['signature']) ? trim($_POST['signature']):'';
    //search the same case details before saving...
    $sql_search = "SELECT * FROM case_information 
                   WHERE case_info->>'$.first_party' = :first_party 
                        AND case_info->>'$.second_party' = :second_party 
                        AND case_info->>'$.case_nature' = :case_nature
                        AND case_info->>'$.received_date' = :received_date";
    $parem_search = array(':first_party'=>$_POST['case']["'first_party'"],
                          ':second_party'=>$_POST['case']["'second_party'"],
                          ':case_nature'=>$_POST['case']["'case_nature'"],
                          ':received_date'=>$_POST['case']["'received_date'"]);
        if($db->dbQuery($sql_search,$parem_search)){
            echo('3');
        }else{
            //insert new record
            $sql_insert = "INSERT INTO case_information (
                case_info,
                instituted_by,
                returned_to,
                discussion,
                remarks,
                next_date_apt,
                person_signature,
                entry_made_on
              )
              VALUES
                (
                :case_info,
                :instituted_by,
                :returned_to,
                :discussion,
                :remarks,
                :next_date_apt,
                :person_signature,
                :entry_made_on  
                )";
            $param = array(
                        ':case_info'=>$case,
                        ':instituted_by'=>$ins,
                        ':returned_to'=>$ret,
                        ':discussion'=>$discussion,
                        ':remarks'=>$remarks,
                        ':next_date_apt'=>$next_appointment_date,
                        ':person_signature'=>$signature,
                        ':entry_made_on'=>date('Y-m-d')
                        );
                //echo($sql_insert);
                if($db->dbQuery($sql_insert,$param)){
                        echo('4');
                }else{
                         .
                         .
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-07 07:03:58

您不必在HTML表单中使用单引号。仅仅是arrayfieldname名就够了。如下所示:

代码语言:javascript
复制
<input type="text" name="case[first_party]" id="first_party" />
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63296764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档