web-dev-qa-db-fra.com

le code de plugin extrait des informations de la base de données dans un cas et non dans un autre. Qu'est-ce qui ne va pas?

Dans mon code de plugin, je tire l'ID de table de deux tables. L'identifiant est extrait d'une table mais pas de l'autre et des erreurs se produisent dans les deux cas. Les requêtes fonctionnent sur mysql quand je les utilise. Des pensées? le code est en dessous et la sortie en dessous. L'identifiant est extrait de la table wp_shclass mais pas de la table wp_shinstructor. Toutes les pensées que je regarde depuis quelques jours et je ne suis pas sûr de ce qui ne va pas. J'utilise wp 3.3.1

function shmain_admin(){
if (!current_user_can('manage_options'))  {
wp_die( __('You do not have sufficient permissions to access this page.') );
}

echo "Hello class";
global $wpdb;
$shrow = $wpdb->get_row("select * from wp_shclass ORDER BY classid DESC LIMIT 1", ARRAY_A);  
$shclassid = $shrow['classid'];
echo "<br> this is " . $shclassid;
$wpdb->show_errors();
$wpdb->print_error();
echo "<br> Hello instructor";
$shrow = $wpdb->get_row("select * from wp_shinstructor ORDER BY instructorid DESC LIMIT 1", ARRAY_A);  
$shinstructorid = $shrow['instructorid'];
echo "<br> this is " . $shinstructorid;
$wpdb->print_error();
}

function shmain_admin_action(){
add_menu_page('sh main', 'main', 'manage_options','shmain', 'shmain_admin');
}

add_action('admin_menu','shmain_admin_action');

et voici la sortie ci-dessous


Bonjour c'est 8

WordPress database error: []
select * from wp_shclass ORDER BY classid DESC LIMIT 1

Bonjour instructeur c'est

WordPress database error: []
select * from wp_shinstructor ORDER BY instructorid DESC LIMIT 1
1
wpuserpj

Supprimer et recréer les tables a résolu le problème. Le problème était dans la façon dont j'avais créé les tables

0
wpuserpj

En général, je vous recommande de lire à propos de $wpdb en détail dans le Codex .

Quelques notes:

  1. N'utilisez jamais le préfixe par défaut wp_.
  2. Ne jamais définir un préfixe codé en dur. Il sera défini lors de l'installation et devrait être ajouté ultérieurement à l'aide de $wpdb->prefix. Mais: Les préfixes peuvent être modifiés avec la commande SQL suivante. "RENAME table wp_posts TO {$wpdb->prefix}posts;"
  3. Normalement, il existe toujours un moyen de contourner les tables personnalisées. Les CPT et les taxonomies personnalisées ne sont qu'un exemple.
0
kaiser