需要帮助使用WPDB在wordpress DB中创建表格

时间:2017-03-12 03:02:25

标签: php wordpress

这是我的代码。我正在尝试运行它时,我一直收到服务器500错误。

    //Insert DATA in db
global $wpdb;
$table_name='customers';

$charset_collate = $wpdb->get_charset_collate();

$sql = "CREATE TABLE IF NOT EXISTS $table_name (
                                          ID int AUTO_INCREMENT NOT NULL,
                                          refnumber varchar(255) NOT NULL,
                                          primary key  (id)
                                          )$charset_collate;";


require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );


$wpdb->insert( $table_name,
                array( 'refnumber' => $customer['id']
                          )
              );

我不确定我做错了什么。我过去使用类似的代码几乎就像这个代码一样成功。

更新1:

好的,所以我打开了wp debug,没有显示任何新内容,我只是得到了500页的常见错误。

直接在数据库上测试我的SQL语法。它有效。

使用在线工具测试我的php语法,没有错误。

还部分纠正了我的代码,结果是所有内容都没有任何错误地执行,甚至错误500也不再出现。

但是!我的数据库实际上并没有创建,在WP的数据库中我只看到我手动创建的表。

我今天工作了4个小时,我找不到我做错了什么。此外,尝试将变量插入到我已创建的数据库中,未显示任何错误,但未添加任何内容。

我搜索了其他类似的问题,但看起来我是唯一一个有这个问题的人。

1 个答案:

答案 0 :(得分:0)

int似乎对其要求有点严格。我没有那么多工作,但是这个页面表明,即使$charset_collate需要一个长度:https://codex.wordpress.org/Creating_Tables_with_Plugins#Creating_or_Updating_the_Table

我不确定代码中def getExpenses(): userExpense = 0 totalExpenses = 0 moreExpenses = "" while moreExpenses != "y": userExpense = float(input("Enter an expense: ")) totalExpenses = totalExpenses + userExpense moreExpenses = input("Do you have more expenses? Type y" +\ " to input more expenses, or any key for no: ") return totalExpenses 之前是否没有空格,但它们在该页面的示例中还包含了一个空格。