【发布时间】:2019-01-02 19:59:06
【问题描述】:
我正在尝试传递已修改的输入字段 ID 列表,以便我可以在 MySQL 中仅为修改后的数据创建 UPDATE 查询。
这是我目前所拥有的......
在 jQuery 中,我有以下代码,它创建了一个 JSON 列表,列出了所有已更改输入数据的 id。数据被添加到隐藏的输入字段中。
updatedFields = [];
$('form :input').change(function(){
attr_name = $(this).attr('id');
updatedFields.push({attr_name})
$("#update_fields").val(JSON.stringify(updatedFields))
});
发布后,我有一个类似于
的数组Array
(
[myform] => Array
(
[update_fields] => [{"attr_name":"field1"},{"attr_name":"field2"}]
[field1] => field1val
[field2] => myfield2val
[id] => 5
.....other irrelevant/nonmodified fields.......
)
)
然后我做extract($_POST['myform']) 使每个字段名称成为它自己的变量。 (是的,我知道使用extract() POST 数据是不安全的,只是为了测试目的)
鉴于我想修改 field1 和 field2 的值,动态创建 UPDATE 查询的最佳方法是什么。
这是我想要创建的:
$query = $db->prepare("UPDATE `table_name` SET `field1` = ?, `field2` = ? WHERE `id` = ?");
$query->bind_param('ssi', $field1, $field2, $id)
$query->execute();
这个解决方案的问题是我不知道如何动态创建 prepare 和 bind_param 查询。
编辑:我知道这是一个解决方案的集群****。这是我能想到的,几乎奏效了。
【问题讨论】:
-
如果我没记错的话,你有一个用于列 name 的变量和另一个用于列 value 的变量吗?您面临的问题是如何在语句中粘贴名称和值?
-
@N.B.是的。我传入的一个值是所有修改变量的列表,其他值是所有变量。我只想更新修改后的
标签: php jquery mysql prepared-statement bindparam