0

送信時にフォームデータをデータベースに保存するコードを1つ作成しました...

if(isset($_POST['submitted']) && ($_SERVER['REQUEST_METHOD'] == 'POST')) {

    global $wpdb;
    $company_name = $wpdb->prefix . "company";
    $single_table = $wpdb->prefix . "single";
    $emp_table = $wpdb->prefix . "employee";
    $idea_table = $wpdb->prefix . "idea";

    if($_POST['team-type'] == "Freelancer"){
        $wpdb->query( $wpdb->prepare("INSERT INTO $company_name (name, team_size) VALUES(%s, %d)", $_POST['cname'],1));  


        $company_id = $wpdb->get_var( "SELECT MAX(id) FROM wp_company" );
        echo "<h2>1</h2>";

        $wpdb->query( $wpdb->prepare("INSERT INTO $single_table (company_id, name, bio,linkedin_url) VALUES (%d, %s, %s, %s)", $company_id, $_POST['freelancer-name'] ,$_POST['free-bio'], $_POST['free-url'] ) );

    }else{
        $query = "INSERT INTO $table_name (name, team_size) VALUES('" . $_POST['cname'] . "'," . $_POST['team'] .")";
        $wpdb->query($query);
        echo "<h2>2</h2>";
    }
    echo "<h2>3</h2>";
}

問題は、データベースにデータが2回保存されることです。

しかし、私がページに置いたh2タグは、一度しか表示されていません。

コードの何が問題になっていますか、またはデータを1回だけ保存するにはどうすればよいですか?

ところで、if条件も正常に機能している場合、選択した内容に基づいてh2タグを確認できますか?

4

1 に答える 1

0

さて、最初は、使用することをお勧めします

$lastid = $wpdb->insert_id;

それ以外の

$company_id = $wpdb->get_var( "SELECT MAX(id) FROM wp_company" );

しかし、それは私が推測するポイントではありません。

それ以外は、クエリに$ wpdb-> insert()を使用することをお勧めします。単純なクエリを実行しているからです。http://codex.wordpress.org/Class_Reference/wpdb#INSERT_rows

そして、それでもうまくいかない場合は、問題はクライアント側にあります。リクエストを2回送信しています。したがって、Fiddlerをインストールして、送信するリクエストの数をスニッフィングしてみてください。

于 2012-12-20T07:40:31.457 に答える