我已经研究了 2 天,但还没有找到适当的解决方案来解决我的问题。本质上,我正在尝试使用 jQuery 基于多个复选框按 ID “链接”数据库行,但这里有点棘手:
背景:
- 我有一个
positions
显示为 HTML 表 (#ct
) 的数据库表 (),每行旁边都有复选框。 - 一次最多可以检查四 (4) 行并相互“链接”(但不必担心可以检查的框数限制)
positions
从SHOULD链接行创建一个新行,covered_positions
其中包含列id
(PK),linked_id1
,linked_id2
,linked_id3
,linked_id4
已经做了什么:
- 每个复选框已经将其值分配
id
给positions
- 一个下拉选择框已经触发了 Javascript 函数
ctActions()
我认为需要的:
ctActions()
使用以下方法在复选框值中创建一个数组:var linked_ids = []; $("#ct input[type='checkbox']:checked").each(function() { linked_ids.push(this.value); });
将数据编码并发送到 PHP:
var linked_ids_json = JSON.stringify(linked_ids); $.post('link-positions.php', { linked_ids_json: linked_ids_json } );
在我的
link-positions.php
:// Get & explode array $array = json_decode($_POST['linked_ids_json']); // Test whether each value is set -- Not sure if needed $linked_id1 = (isset($array[0]) ? $array[0] : ""); $linked_id2 = (isset($array[1]) ? $array[1] : ""); $linked_id3 = (isset($array[2]) ? $array[2] : ""); $linked_id4 = (isset($array[3]) ? $array[3] : ""); include('../mysqli-connect.php'); $conn = dbConnect(); $sql = "INSERT INTO `covered_positions` ( linked_id1, linked_id2, linked_id3, linked_id4) VALUES (?, ?, ?, ?)"; $stmt = $conn->prepare($sql); $stmt->bind_param('iiii', $linked_id1, $linked_id2, $linked_id3, $linked_id4); $stmt->execute(); $conn->close();
但在这一切之后,什么都没有发生。我确定我的代码中有一些明显的错误,所以我想我会发布它以供一些更有经验的人看。
更新
- 已修复但仍未解决问题
$stmt->execute
。$stmt->execute()