【发布时间】:2015-10-08 08:48:12
【问题描述】:
我正在开发一个需要在数据库中创建表的插件,这是我的代码,请帮助 代码没有显示任何错误,也没有创建表格
public function create_phone_order_db() {
global $wpdb;
$charset_collate = $wpdb->get_charset_collate();
$table_name = $wpdb->prefix . 'phone_orders';
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
$sql = "CREATE TABLE IF NOT EXISTS " . $table_name . " (
id INT NOT NULL AUTO_INCREMENT,
billing_country VARCHAR(100) NOT NULL,
billing_first_name VARCHAR(50) NOT NULL,
billing_last_name VARCHAR(50) NOT NULL,
billing_company VARCHAR(50) NOT NULL,
billing_address_1 VARCHAR(120) NOT NULL,
billing_address_2 VARCHAR(120) NOT NULL,
billing_city VARCHAR(50) NOT NULL,
billing_state VARCHAR(40) NOT NULL,
billing_postcode VARCHAR(8) NOT NULL,
billing_email VARCHAR(25) NOT NULL,
billing_phone VARCHAR(20) NOT NULL,
ship_to_different_address VARCHAR(10) NOT NULL,
shipping_country VARCHAR(50) NOT NULL,
shipping_first_name VARCHAR(40) NOT NULL,
shipping_last_name VARCHAR(40) NOT NULL,
shipping_company VARCHAR(50) NOT NULL,
shipping_address_1 VARCHAR(120) NOT NULL,
shipping_address_2 VARCHAR(120) NOT NULL,
shipping_city VARCHAR(50) NOT NULL,
shipping_state VARCHAR(50) NOT NULL,
shipping_postcode VARCHAR(8) NOT NULL,
admin_email_switched VARCHAR(25) NOT NULL,
admin_switched_id INT NOT NULL,
admin_user_name_switched VARCHAR(30) NOT NULL,
admin_role_switched VARCHAR(15) NOT NULL,
order_comments VARCHAR NOT NULL,
shipping_method VARCHAR NOT NULL,
payment_method VARCHAR NOT NULL,
_wpnonce VARCHAR NOT NULL,
_wp_http_referer VARCHAR NOT NULL,
PRIMARY KEY (id)
) " . $charset_collate . ";";
dbDelta($sql);
}
register_activation_hook(FILE, array($this, 'create_phone_order_db'));
【问题讨论】:
-
您确定该表在您的数据库中不存在吗?请注意,您有
CREATE TABLE IF NOT EXISTS ... -
是的,它不存在.. 我认为我创建的表太大了...
-
尝试
echo $sql;并从 phpMyAdmin 执行原始 SQL,如果您没有安装 phpMyAdmin,则将查询粘贴到此处。 -
在查询没问题之前我已经完成了......我要从我的 sql 查询中删除大部分字段,看看它是否有效??
-
不,您的查询中的字段数没有问题,不用担心。相反,您可以尝试调试(例如,使用
die)以查看激活插件时是否正在执行create_phone_order_db。