我试图创建一个允许某人将一行信息保存到wpdb中的表单。出于某种原因,当我提交表格时,表中没有任何内容。我从表格中删除了所有内容,并且我能够提交"名称"值和它存储在数据库中,但是一旦我向表单添加更多字段并尝试将数据添加到数组中没有任何反应。这是我到目前为止所拥有的。
function elh_insert_into_db() {
global $wpdb;
// creates safety_users in database if not exists
$table = $wpdb->prefix . "safety_users";
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE IF NOT EXISTS $table (
`id` mediumint(9) NOT NULL AUTO_INCREMENT,
`name` text NOT NULL,
UNIQUE (`id`)
) $charset_collate;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
// starts output buffering
ob_start();
?>
<form action="#v_form" method="post" id="v_form">
<label for="first_name"><h3>First Name</h3></label>
<input type="text" name="first_name" id="first_name" />
<label for="last_name"><h3>Last Name</h3></label>
<input type="text" name="last_name" id="last_name" />
<input type="submit" name="submit_form" value="submit" />
</form>
<?php
$html = ob_get_clean();
// does the inserting, in case the form is filled and submitted
if ( isset( $_POST["submit_form"] ) && $_POST["first_name"] != "" ) {
$table = $wpdb->prefix."safety_users";
$name = ($_POST["first_name"]);
$lname = ($_POST["last_name"]);
$wpdb->insert(
$table,
array(
'name' => $name,
'lname' => $lname
)
);
$html = "<p>Your name <strong>$name</strong> was successfully recorded. Thanks!!</p>";
}
// if the form is submitted but the name is empty
if ( isset( $_POST["submit_form"] ) && $_POST["first_name"] == "" )
$html .= "<p>You need to fill the required fields.</p>";
// outputs everything
return $html;
}
// adds a shortcode you can use: [insert-into-db]
add_shortcode('elh-db-insert', 'elh_insert_into_db');
如果有人在我的代码中发现任何错误,请告诉我们!
答案 0 :(得分:0)
尝试:
<form action="index.php" method="POST" id="v_form">
而不是:
<form action="#v_form" method="post" id="v_form">
将index.php
替换为您的PHP文件名。
编辑: 似乎有一个错误。
$name = s($_POST["first_name"]);
删除($_POST
答案 1 :(得分:0)
因此,在查看myPHPadmin之后,我能够创建姓氏列,然后我要提交的任何其他内容,并且由于不需要创建列,因此它们都添加到数据库中。