使用表单在数据库中插入数据

时间:2013-03-14 作者:pixelweb

我正在编写一个简单的插件,它可以在数据库中创建一个名为“新闻稿”的表,并提供一个短代码来在页面中放置注册表。表格包含“姓名”和“电子邮件”。我在数据库中插入表单数据(名称+电子邮件)时遇到问题。我写道:

<?php
$name = $_POST[\'name\'];
$email = $_POST[\'email\'];
function insertuser(){
global $wpdb;
$table_name = $wpdb->prefix . "newsletter";
$wpdb->insert($table_name, array(\'name\' => $name, \'email\' => $email) ); 
}
?> 
但id不起作用。如何从表单中获取数据并插入到表中?

1 个回复
最合适的回答,由SO网友:Mike Madern 整理而成

这两个变量$name$email 函数内部未知。您必须通过更改global $wpdb 进入global $wpdb, $name, $email:

require_once(\'../../../wp-load.php\');

/**
 * After t f\'s comment about putting global before the variable.
 * Not necessary (http://php.net/manual/en/language.variables.scope.php)
 */
global $name = $_POST[\'name\'];
global $email = $_POST[\'email\'];

function insertuser(){
  global $wpdb, $name, $email;
  $table_name = $wpdb->prefix . "newsletter";
  $wpdb->insert($table_name, array(\'name\' => $name, \'email\' => $email) ); 
}

insertuser();
或者,您可以将变量放入函数的参数中:

require_once(\'../../../wp-load.php\');

$name = $_POST[\'name\'];
$email = $_POST[\'email\']

function insertuser( $name, $email ) {
  global $wpdb;

  $table_name = $wpdb->prefix . \'newsletter\';
  $wpdb->insert( $table_name, array(
    \'name\' => $name,
    \'email\' => $email
  ) );
}

insertuser( $name, $email );
或者,无功能:

require_once(\'../../../wp-load.php\');

global $wpdb;

$name = $_POST[\'name\'];
$email = $_POST[\'email\'];
$table_name = $wpdb->prefix . "newsletter";
$wpdb->insert( $table_name, array(
    \'name\' => $name,
    \'email\' => $email
) );

结束

相关推荐

dbDelta not creating tables

我浏览了很多线程、codex页面并尝试处理很多事情,但我的代码似乎没有创建表。我也不知道我错在哪里。我检查了数据库中的booking\\u db\\u版本,当我在文件中更新它时,它会得到更新。这是密码global $booking_db_version; $booking_db_version = \"1.0.0\"; function booking_install() { global $wpdb; global $booking_db_ver