web-dev-qa-db-fra.com

$ wpdb-> insert insérant deux lignes dans la base de données

Bonjour, j'essaie d'insérer des données dans la base de données, mais $ wpdb-> insert insère deux lignes.

mon code pour insérer des données est

global $wpdb;
    $tablename = $wpdb->prefix . '<TABLE NAME>';
 for ($i = 0; $i < sizeof($emails); $i++) {

                $data = array("post_id" => $post_id,
                    "user_id" => $user_id,
                    "email" => $emails[$i], 
                    "status" => 1
                    );
                     $wpdb->insert($tablename, $data);

        }

la taille de $ emails est 1 (si je suis en train d'insérer un identifiant d'email).

Où est-ce que je fais une erreur s'il vous plaît faites le moi savoir.

2
Bushra Shahid

Essayez quelque chose comme ça

function insert_data_into_table () {
        global $wpdb;
        $table_name = $wpdb->prefix . "your_table_name";

        //Check if table exists
        if($wpdb->get_var("show tables like '$table_name'") != $table_name) :

            //if not, create the table   
            $sql = "CREATE TABLE " . $table_name . " (
            (...)
            ) ENGINE=InnoDB;";

            require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
            dbDelta($sql);
        else:
          foreach($emails as $mail):
              $insert = "INSERT INTO  " . $table_name . "
                (post_id, post_id, email, post_id) 
                VALUES ($post_id, $user_id, email['content'], 1);"
              $results = $wpdb->query( $insert );
          endforeach;
        endif;
    }

Je suppose que $email est un tableau contenant des données? Si vous voulez sauvegarder le tableau entier, vous devriez alors serialize() le tableau.

1
Steven