Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PDO
PDO Forum d'entraide sur PDO (PHP Data Objects) : pilote générique de bases de données avec PHP. Avant de poster -> FAQ PDO et Cours PDO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/02/2012, 14h28   #1
Nouveau Membre du Club
 
Inscription : novembre 2007
Messages : 43
Détails du profil
Informations personnelles :
Âge : 37

Informations forums :
Inscription : novembre 2007
Messages : 43
Points : 32
Points : 32
Par défaut Connaitre le n° de ligne ou se trouve l'erreur SQL avec PDO

Bonjour à tous,

dans un projet assez lourd, je me retrouve avec pas mal d'erreurs de requêtes SQL (suite renommage de table et de champs).

J'utilise pdo avec des requêtes préparé et exécuté comme ça :
Code :
1
2
3
4
if ( !$stmt -> execute() ) {
        print_r( $stmt -> errorInfo() ); 
        exit();
        }
Le problème c'est que errorinfo() me donne l'erreur sql mais pas du tout le fichiers ni la ligne ou est l'erreur est levé.
J'ai regardé du coté de errorCode() mais je ne suis pas plus avancé.
J'ai ensuite pensé que je pouvais afficher le fichier et le n° de la ligne avec php, genre comme ça :
Code :
1
2
3
4
5
if ( !$stmt -> execute() ) {
        print_r( $stmt -> errorInfo() ); 
        echo $_SERVER['SCRIPT_FILENAME'] . Numéro de la ligne
        exit();
        }
Mais je ne voie pas comment afficher le n° de la ligne courante.

Cela m'étonne que pdo ne prévoie pas d'afficher le fichier et la ligne ou se trouve l'erreur....

J'ai loupé quelque chose ?
greg91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2012, 14h36   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 031
Points : 5 031
Passe à un error mode d'exceptions:
Code :
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/02/2012, 15h11   #3
Nouveau Membre du Club
 
Inscription : novembre 2007
Messages : 43
Détails du profil
Informations personnelles :
Âge : 37

Informations forums :
Inscription : novembre 2007
Messages : 43
Points : 32
Points : 32
Tu me sauve la vie Benjamin Ça marche nickel !

je met le code de mon singleton pour info :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
/**
 * Classe implémentant le singleton pour PDO
 * @author Savageman
 */
 
class PDO2 extends PDO {
    private static $_instance;
 
    public function __construct( ) {
        }
 
    /* Singleton */
    public static function getInstance() {
        if ( !isset(self::$_instance ) ) {
            try {
                self::$_instance = new PDO( 'mysql:host=' . DB_HOST.';port='.DB_PORT.';dbname='.DB_NAME, DB_USER, DB_PASSWORD, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8') );
                self::$_instance -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            } catch (PDOException $e) {
                echo $e;
            }
        } 
        return self::$_instance; 
    }
}
?>
Merci !!
greg91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2012, 17h01   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 031
Points : 5 031
Voici un singleton un peu plus fourni pour PDO si ça t'intéresse: https://github.com/bdelespierre/php-...base.class.php
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h56.


 
 
 
 
Partenaires

Hébergement Web