web-dev-qa-db-fra.com

$ wpdb-> insert ne fonctionne d'aucune façon

Je sais que ce type de question a été posé à maintes reprises, mais je ne pouvais pas trouver de solution à mon problème, j'espère donc que vous pourrez m'aider. J'utilise WP 3.3. et j'ai créé une table personnalisée. Maintenant, je veux y insérer des données, mais je ne parviens pas à les faire fonctionner. Ceci est mon code:

global $wpdb;
$table_name = $wpdb->prefix . "my_data";
$wpdb->insert($table_name, array(
            'my_id'     => NULL,
        'my_day'    => $day,
        'my_month'  => $month,
        'my_abbr'   => $abbr,
        'my_venue'  => $venue,
        'my_geo'    => $geo_one.", ".$geo_two,
        'my_artist' => $artist,
        'my_link'   => $link
                )
                );

J'essaie d'insérer des données depuis plusieurs heures sans chance. À mes yeux, le code est correct, mais je suppose que je ne fais que soulever quelque chose d’important ici. Tous les indicateurs seraient appréciés! Je vous remercie

7
Sven

Lorsque la méthode $wpdb ne fonctionne pas comme il se doit, elle est probablement liée à la requête SQL résultante (en raison d'une entrée incorrecte ou de quelque chose d'autre).

Suivez wpdb reference in Codex pour le dépannage:

  • activer l'affichage des erreurs de base de données via $wpdb->show_errors()
  • vérifier quelle requête est en train d'être formée et exécutée via $wpdb->last_query
13
Rarst

La classe wpdb n'a pas d'insert; vous ne devriez pas utiliser la requête; voir le codex et vous ne trouvez pas cette fonction insert() - http://codex.wordpress.org/Class_Reference/wpdb

Un exemple pour insérer une table personnalisée sur WPDB; utilisez une syntaxe CREATE TABLE- SQL par défaut et créez avec la query() de wpdb la table avec vos valeurs.

        $table = $GLOBALS['wpdb'] -> prefix . 'my_data';
        $GLOBALS['wpdb'] -> query(
            "CREATE TABLE $table (
            called_by varchar(96) NOT NULL,
            my_name varchar(96) NOT NULL,
            my_type varchar(15) NOT NULL,
            first_call int(11) NOT NULL,
            arg_count tinyint(4) NOT NULL,
            file_name varchar(128) NOT NULL,
            line_num smallint NOT NULL,
            PRIMARY KEY (first_call, my_name) )"
        );

Pour insérer cette source, utilisez la register_activation_hook()- hook; seulement lors de l'activation, le plugin installera la table, si elle n'existe pas. Sur register_uninstall_hook(), je supprime les tables personnalisées.

1
bueltge