詳細検索

Sobre Tabelas no Banco de Dados do Formulário de Contato

Avatar
por すがピー
4 min de leitura

Sobre Tabelas no Banco de Dados do Formulário de Contato
Traduzido do 日本語 • Ver original

O plugin de questionário Contact Form 7 envia apenas e-mails, então o Banco de Dados do Formulário Contato é um plug-in que armazena dados no banco de dados.

Ao adicionar ambos os plugins ao WordPress, você pode facilmente armazenar o conteúdo do formulário de entrada no banco de dados.

No entanto, a tabela criada por este Banco de Dados do Formulário de Contato era um fraude.

Quando você acessa o administrador do Banco de Dados do Formulário de Contato a partir do administrador do WordPress, pode ver uma lista de dados inseridos no formulário de entrada, e parece que as postagens de um único formulário são armazenadas como um único registro. No entanto, na tabela propriamente dita, cada entrada do formulário de entrada é registrada como um único registro.

Se houver três itens de entrada no formulário, três registros serão registrados em uma única postagem, e em cada registro, apenas o conteúdo de cada item de entrada será registrado na chave com o horário de publicação, nome do formulário de entrada e nome do item de entrada.

Aliás, a estrutura da tabela é a seguinte.

mysql> DESC wp_cf7dbplugin_submits; 
+-------------+---------------+------+-----+---------+-------+
| Campo | Tipo | Null | Chave | Padrão | Extra |
+-------------+---------------+------+-----+---------+-------+
| submit_time | decimal(16,4) | NÃO | MUL | NULL | |
| form_name | varchar(127) | SIM | MUL | NULL | |
| field_name | varchar(127) | SIM | MUL | NULL | |
| field_value | Texto longo | SIM | | NULL | |
| field_order | int(11) | SIM | | NULL | |
| arquivo | longblob | SIM | | NULL | |
+-------------+---------------+------+-----+---------+-------+
6 carreiras em conjunto (0,03 seg)

A lista de índices é a seguinte.

mysql> MOSTRAR ÍNDICE DE wp_cf7dbplugin_submits; 
+------------------------+------------+-----------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Tabela | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinalidade | Sub_part | Embalado | Nulo | Index_type | Comentário | Index_comment |
+------------------------+------------+-----------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| wp_cf7dbplugin_submits | 1 | submit_time_idx | 1 | submit_time | A | 2 | NULL | NULL | | BTREE | | |
| wp_cf7dbplugin_submits | 1 | form_name_idx | 1 | form_name | A | 1 | NULL | NULL | SIM | BTREE | | |
| wp_cf7dbplugin_submits | 1 | field_name_idx | 1 | field_name | A | 26 | NULL | NULL | SIM | BTREE | | |
+------------------------+------------+-----------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
3 carreiras em conjunto (0,00 seg)

Aliás, quando tentei inserir um registro com o mesmo horário, mas conteúdo diferente, consegui registrá-lo, e ao navegar pelos dados da tela de gerenciamento nesse estado, dois posts com o mesmo horário apareceram como um registro confuso. (Bem, claro)

O mesmo tempo é o mesmo em milissegundos, então pode não haver problema se você não se importar tanto com sites, mas deve se preocupar especialmente com sites que lidam com informações pessoais.

Então, como contramedida, mude a estrutura da tabela.

Primeiro, exclua o índice.

TABELA ALTER wp_cf7dbplugin_submits DROP INDEX submit_time_idx; 
TABELA ALTER wp_cf7dbplugin_submits ÍNDICE DROP form_name_idx; 
TABELA ALTER wp_cf7dbplugin_submits ÍNDICE DROP field_name_idx; 

Em seguida, coloque de volta com a chave composta.

alterar tabela wp_cf7dbplugin_submits adicionar chave primária de restrição (submit_time, form_name, field_name); 

O resultado é assim.

mysql> MOSTRAR ÍNDICE DE wp_cf7dbplugin_submits; 
+------------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Tabela | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinalidade | Sub_part | Embalado | Nulo | Index_type | Comentário | Index_comment |
+------------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| wp_cf7dbplugin_submits | 0 | PRIMÁRIO | 1 | submit_time | A | 173 | NULL | NULL | | BTREE | | |
| wp_cf7dbplugin_submits | 0 | PRIMÁRIO | 2 | form_name | A | 173 | NULL | NULL | | BTREE | | |
| wp_cf7dbplugin_submits | 0 | PRIMÁRIO | 3 | field_name | A | 1038 | NULL | NULL | | BTREE | | |
+------------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
3 carreiras em conjunto (0,00 seg)

Aliás, parece que algumas versões do MySQL não permitem definir chaves compostas, mas você pode usar as modernas que conseguem.

Agora, mesmo que haja uma postagem exatamente ao mesmo tempo, uma delas não será registrada, então a integridade dos dados pode ser mantida.

Related Articles