誰かがwpdbに情報行を保存できるようにするためのフォームを作成しようとしています。何らかの理由で私がフォームを送信するときに、テーブルに何も格納されません。私はフォームからすべてを取り出し、私は "名前"の値を提出することができるとデータベースに格納しますが、フォームにフィールドを追加し、配列にデータを追加しようとすると何も起こりません。ここに私がこれまで持っているものがあります。WordPressデータベース配列がデータを渡していない
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');
私のコードで誰かが間違いを見たら私に知らせてください!
保存していたファーストネームは姓ではなく、これに関連しているとお伝えしましたか? '$ name = s($ _ POST [" first_name "]); $ lname =($ _POST ["last_name"]); 'sがありません? '($ _POST [" last_name "])' '($ _ POST [" last_name "])'に変更しますか? – admcfajn
私はちょうど私がちょうど私がコードの上にコピーしていたときに私はそれが私のサイトではそうではないが気づいてくれてありがとう! – WordPressFreddie
np、私はmySqlプロではありませんが、各パラメータの列を追加する必要はありませんか?あなたのCreate Tableステートメントは、IDと名前のカラムだけを追加しています。名前が '' '$ sql ="であることが期待されます。テーブルが存在しない場合$ table( 'id' mediumint(9)NOT NULL AUTO_INCREMENT、 'name'テキストはNULLでなく、' lname'テキストではありません。 ユニーク( 'id') )$ charset_collate;"; '' – admcfajn