Comment enregistrer les erreurs mysql depuis wordpress core?

4

Je développe un site wordpress et j'aimerais pouvoir enregistrer et gérer les erreurs mysql à partir de wordpress core.

Mon site contient un mélange de pages wordpress et de publications, ainsi que quelques pages php exécutées 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 détecter les erreurs php à la fois dans le noyau de 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.

J'aimerais pouvoir également détecter, consigner et traiter d'éventuelles erreurs MySQL provenant de l'application principale wordpress.

Des suggestions?

Merci.

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

    
posée jdias 25.01.2013 - 01:53

3 réponses

6

Vous devriez utiliser wpdb class 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 la 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.

    
réponse donnée Milo 25.01.2013 - 02:27
0

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 un 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 .
réponse donnée blockhead 21.05.2013 - 17:10
0

essayer avec

global $wpdb;
echo $wpdb->last_query;

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

    
réponse donnée insidepower 13.06.2015 - 04:08

Lire d'autres questions sur les étiquettes