Php 使用wpdb在表单中插入100多个字段的最合适方法->;插入()
我有一个WordPress表单,有100多个字段。我使用jQuery表单插件,并使用AJAX以$\u POST字符串发送数据。表中的所有列名与HTML字段中的名称相同Php 使用wpdb在表单中插入100多个字段的最合适方法->;插入(),php,ajax,wordpress,Php,Ajax,Wordpress,我有一个WordPress表单,有100多个字段。我使用jQuery表单插件,并使用AJAX以$\u POST字符串发送数据。表中的所有列名与HTML字段中的名称相同 jQuery('#save_form').button().click(function() { jQuery('#action').val('save_form'); form = jQuery('#form'); form.ajaxSubmit({ success: function(r
jQuery('#save_form').button().click(function() {
jQuery('#action').val('save_form');
form = jQuery('#form');
form.ajaxSubmit({
success: function(response) {
console.log(response);
}
});
return false;
在functions.php中
function save_form(){
if (!isset($_POST['_nonce']) || !wp_verify_nonce($_POST['_nonce'], 'form')) {
wp_send_json_error([
'message' => 'Error! refresh page and try again.'
]);
}
//我可以在这里获得$\u POST中的所有值…
//我可以将整个$\u后序列化字符串作为数组传递给数据库,还是需要逐个定义所有值。表单中有100多个值。如果有一种传递所有值的简单方法,是否可以删除不需要的字段,如$\u POST字符串中的_nonce&referer
有很多方法可以做到这一点,这取决于你有什么样的数据,它的用途,它来自哪里,等等 你说列名与字段匹配,所以一个数据库表中有大约100列 你的问题的简短回答是: 是,您可以使用对齐的列将该数组传递给数据库 但是 我强调你不应该。您应该根据值的预期类型验证甚至清理这些值。如果你有电话号码,你应该确保没有时髦的符号。如果你有一个网站字段,你应该确保它是一个有效的URL。(您使用的是
wpdb->insert
,因此不必担心SQL注入,但如果使用SQL查询,则需要对其进行参数化并进行准备)
用户是叮咚人,有人会将错误类型的数据放在错误的字段中。检查这一点可能会增加平台准备工作的开销,但这将避免以后的许多麻烦
另外,我也忍不住想知道你的“100+列”表是否可以设置得更好。听起来你最好使用一个更类似于WordPress“post\u meta
table”的表格,它有:
+---------+---------+----------+------------+
| meta_id | post_id | meta_key | meta_value |
+---------+---------+----------+------------+
你可以用类似的东西,比如
+----+----------+-------+-----------+
| ID | entry_id | field | value |
+----+----------+-------+-----------+
| 1 | 1 | email | a@123.com |
+----+----------+-------+-----------+
| 2 | 1 | phone | 123-4567 |
+----+----------+-------+-----------+
| 3 | 1 | name | John |
+----+----------+-------+-----------+
| 4 | 2 | email | b@xyz.com |
+----+----------+-------+-----------+
我对你的特定用例没有足够的了解,说100列是错误的(MySQL的最大列大小是4096,所以……),但是我会首先仔细考虑一些DB规范化。
+---------+---------+----------+------------+
| meta_id | post_id | meta_key | meta_value |
+---------+---------+----------+------------+
+----+----------+-------+-----------+
| ID | entry_id | field | value |
+----+----------+-------+-----------+
| 1 | 1 | email | a@123.com |
+----+----------+-------+-----------+
| 2 | 1 | phone | 123-4567 |
+----+----------+-------+-----------+
| 3 | 1 | name | John |
+----+----------+-------+-----------+
| 4 | 2 | email | b@xyz.com |
+----+----------+-------+-----------+