web-dev-qa-db-fra.com

Comment enregistrer les erreurs mysql de wordpress core?

Je développe un site wordpress et je voudrais pouvoir me connecter et gérer les erreurs mysql de wordpress core.

Mon site contient un mélange de pages wordpress et de messages + quelques pages php qui fonctionnent sous le moteur wordpress. J'ai configuré le fichier php.ini pour ajouter un fichier php à tous les scripts php avec les fonctions de gestion des erreurs. Ils fonctionnent bien pour attraper les erreurs php à la fois dans le noyau wordpress et dans mes propres scripts php.

J'attrape également toutes les erreurs MySQL dans mes propres scripts php. Par exemple, échec de la connexion à une base de données, etc.

Je souhaite également pouvoir détecter, consigner et traiter les éventuelles erreurs MySQL de l’application de base wordpress.

Aucune suggestion?

Merci.

Je lisais le codex et je ne trouvais pas de réponse

4
jdias

Vous devriez utiliser la classe wpdb pour toutes vos propres requêtes. Toutes les requêtes principales utilisent également wpdb. Voir wpdb Afficher et masquer les erreurs SQL

<?php $wpdb->show_errors(); ?> 
<?php $wpdb->hide_errors(); ?> 

Vous pouvez également imprimer l'erreur (le cas échéant) générée par la requête la plus récente avec print_error.

<?php $wpdb->print_error(); ?>

Voir aussi Constante SAVEQUERIES pour wp-config.php :

define('SAVEQUERIES', true);

exemple d'utilisation:

<?php
if (current_user_can('administrator')){
    global $wpdb;
    echo "<pre>";
    print_r($wpdb->queries);
    echo "</pre>";
}
?>

Il existe également un certain nombre de plugins de débogage utiles, tels que Debug Bar & Console. Rechercher dans le référentiel de plugins WordPress pour cela et d'autres plugins liés au débogage.

6
Milo

Une façon de faire ceci:

  1. Créez un fichier appelé db.php dans wp-content. Wordpress lira ce fichier immédiatement avant l'instanciation de l'objet $wpdb.
  2. Créez une class qui étend wpdb et écrasez la méthode print_errors pour faire ce que vous voulez.
  3. À la fin de ce fichier, instanciez votre classe en lui attribuant la variable $wpdb (par exemple, $wpdb = new wpdb2(DB_USER, DB_PASSWORD, DB_NAME, DB_Host);).
  4. Wordpress utilisera maintenant votre $wpdb à la place.
0
blockhead

essayer avec

global $wpdb;
echo $wpdb->last_query;

comme je travaille avec ajax, ceci est directement sous forme de chaîne.

0
insidepower