php - PHP $_POST[][] 二维数组到 json_encode 添加额外的单引号
问题描述
问题是我正在命名我的表单元素,如下所示(突出显示):
我的表格中有数组的集合。现在我想将这些数组保存在具有 json 数据类型的 MySql 数据库表中(我使用 MySQL v-8 和 PHPDO)。为此,我使用以下函数将我的 $_POST 数组转换为 json 数组:
$case = json_encode($_POST['case']);
它工作正常并将记录保存在我的表的列中,但问题是它使用以下方式存储键:
在上面的快照中,您可能会看到每个键都用双引号括起来,然后用单引号括起来。
我需要用 json 列保存相同的记录,但双引号后没有单引号。
我究竟做错了什么?我将上述从 $_POST['case'] 数组转换为 json 数组的 PHP 代码如下:
......
$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{
.
.
解决方案
您不必在 HTML 表单中使用单引号。只需 array[fieldname] 就足够了。像这样:
<input type="text" name="case[first_party]" id="first_party" />
推荐阅读
- ios - 如何在不使用 VPN 的情况下计算我的 iOS 应用程序的网络使用情况?
- php -
在我的时间里不起作用 - php - 如何找到不超过三个字符串的数组值?
- javascript - React Native / Redux - 渲染项目列表,如何通过 id 为每个项目请求数据以显示详细信息而不覆盖先前请求的数据?
- node.js - sequelize 制作外键复合和唯一索引。
- ruby - 如何用 content_tag 包装数据均衡器
- angular - 角度可拖动/可放置的表格行
- java - Java.io.IOException:error=2,在java中执行curl时没有这样的文件或目录
- scala - 如何使任何的scala列表具有强制属性?
- html - CSS透明边框