Ajouter une colonne à la base de données wordpress
J'ai essayer de mettre à jour mon plugin. Donc, je dois mettre à niveau mysql_table. Mais lorsque vous essayez de colonne, programme d'exception.
C'est mon tableau en cours :
$sql = "CREATE TABLE {$table_name} (
say_id int(11) not null AUTO_INCREMENT,
customer_mail text not null,
customer_name text not null,
customer_messagge text not null,
messagge_date_time datetime not null,
PRIMARY KEY (say_id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1";
require_once(ABSPATH . "wp-admin/includes/upgrade.php");
dbDelta($sql);
Maintenant, je suis à ajouter de la colonne, plus d'une table. J'ai essayer de Modifier le tableau, ce travail un temps, et d'ajouter une colonne, mais encore une actualisation, j'obtiens cette erreur.
C'est mycode
$wpdb->query("ALTER TABLE wp_customer_say ADD say_state INT(1) NOT NULL DEFAULT 1");
Et c'est mon erreur
WordPress erreur de base de données: [Double nom de colonne 'say_state']
ALTER TABLE wp_customer_say AJOUTER say_state INT(1) not NULL DEFAULT 1
Je vois cette erreur et ı essayer ce;
$query = $wpdb->query("select * from wp_customer_say");
$respond = mysql_num_fields( $query );
$column_array = array();
for($i = 0; $i < $respond ; $i++):
$column_array[] = mysql_field_name($query,$i);
endfor;
if( !in_array("say_state",$column_array) ):
$wpdb->query("ALTER TABLE wp_customer_say ADD say_state INT(1) NOT NULL DEFAULT 1");
endif;
et j'obtiens cette erreur.
Warning: mysql_num_fields() expects parameter 1 to be resource, integer given in
Aider s'il vous plaît. Je vous remercie.
Désolé mauvais anglais.
OriginalL'auteur Olkunmustafa | 2014-01-24
Vous devez vous connecter pour publier un commentaire.
Utiliser cette requête. Je n'utilise que mysql-standred pour obtenir un nom de champ par la rapidité des requêtes et cela permettra de résoudre votre problème:
Pouvez-vous veuillez donner une requête afin que je puisse vérifier quel était le problème dans ta requête?
droit de réponse. Autre réponse, si le tableau est vide d'erreur. Merci
mais au-dessus de vous dire qu'il ne fonctionne pas.. et d'autre part, en vertu de cette "mauvaise" réponse vous dire
working
🙂 ) )OriginalL'auteur Addy
Vous pouvez vérifier le nom de la colonne existe dans WordPress en utilisant ci-dessous façon,
J'aime cette version.
Beau travail, fonctionne bien. J'ai ajouté ma propre réponse sur cette base. Fondamentalement juste travaillé fait en sorte que nous ne pas coder en dur quelque chose que nous n'avez pas besoin d'. +1
Je l'aime.. Merci.. +1
NON, ÇA NE fonctionne PAS TOUJOURS ! Il échouera s'il n'y a pas de lignes dans la table (par exemple, la nouvelle table ou des tables vides).
OriginalL'auteur Rikesh
Voulais juste ajouter qu'il y a un peu de mieux pour ce faire que @Amandeep Wadhawan de réponse.
Vous avez juste à vous assurer que votre
install_tables()
fonction sera toujours de créer les tables qui reflètent le dernier numéro de version et définit lamy_plugins_current_db_version
option pour le dernier numéro de version.Puis dans le
update_databases()
de la fonction vous avez juste à faire en sorte d'augmenter$current_version
avant chaque cas.Avec ce set-up, vous pouvez aveuglément mise à jour sans avoir inutilement requête pour savoir si les colonnes ou les tables existent d'abord et moins de requêtes sont toujours une bonne chose....surtout si votre code de mise à jour est en tirant sur le
plugins_loaded
crochet.Il est aussi beaucoup plus propre, montre une claire chemin de mise à niveau, et s'exécute uniquement les mises à jour nécessaires - il est donc plus efficace.
OriginalL'auteur Tim Aagaard
J'aime vraiment Rikesh de l'option (même upvoted!), mais je pense que pour éviter le coder en dur l'information qui pourrait changer, comme
$table_prefix
de lawp-config.php
fichier, cette option est un pari plus sûr.OriginalL'auteur davewoodhall