第4行似乎有语法错误。
string is not quoted
↓ ↓ ↓
$sql = "CREATE TABLE IF NOT EXISTS " . $wpdb->prefix.credofy_contact_form. " (
相反,我建议您将表创建逻辑移动到插件,并让它从安装挂钩上运行。
下面是一个示例:
<?php
/**
* Plugin Name: WPSE 334694
* Plugin URI: https://wordpress.stackexchange.com/q/334694/13418
* Description: Create database table on activation
* Version: 1.0
* Author: You
* Author URI: https://example.com/
* License: GPL2
* License URI: https://www.gnu.org/licenses/gpl-2.0.html
*/
function wpse_334694_create_table() {
global $wpdb;
$charset_collate = $wpdb->get_charset_collate();
$sql = "
CREATE TABLE `{$wpdb->base_prefix}credofy_contact_form` (
id mediumint(12) NOT NULL AUTO_INCREMENT,
your_name VARCHAR(200) NOT NULL,
your_email VARCHAR(200) NOT NULL,
your_phone VARCHAR(200) NOT NULL,
your_hobby VARCHAR(200) NOT NULL,
PRIMARY KEY (id) ) $charset_collate;
";
require_once(ABSPATH . \'wp-admin/includes/upgrade.php\');
dbDelta($sql);
}
register_activation_hook( __FILE__, \'wpse_334694_create_table\' );
只需将此文件复制到您在中选择的目录名:
/plugins/{your_plugin_dir_name}/index.php
。。。然后激活插件。执行此操作后wpse_334694_create_table
将在激活期间运行一次,而不是此后的任何时候,除非您停用并重新激活插件。
还可以修改$wpdb->insert(...)
按以下格式调用:
$wpdb->insert(
\'table\',
array(
\'column1\' => \'value1\',
\'column2\' => 123
),
array(
\'%s\', // format of column 1
\'%d\' // format of column 2
)
);
有关的更多信息
$wpdb->insert()
请咨询
document here 它还提供了有关如何通过
$wpdb
全球的
我还建议将插入逻辑移出插件,启动钩子的背面,并向表单中添加nonce字段,以验证请求,但这稍微超出了这个问题的范围,这个问题主要集中在解决错误上。
推荐阅读: