IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Insertion données base ORACLE vers base MS SQLserver non réussi


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 125
    Par défaut Insertion données base ORACLE vers base MS SQLserver non réussi
    Salut!
    je veux récupérer les données d'une base de données ORACLE pour en suite insérer dans une base de données SQL Server. Les chaines de connexion sont correctes ainsi que la réccupération des deux bases. Mais seulement l'insertion ne s'effectue pas et il y'a pas de message d'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    <!DOCTYPE html>
    <html>
    	<head>
    	</head>
    	<body>
     
    		<?php
    			/* Afficher les erreurs à l'écran */
    			ini_set('display_errors', 1);
    			/* Afficher les erreurs et les avertissements. */
    			error_reporting(E_ALL);
     
    			include('connexion.php');
    			// requête d'une table de la base ORACLE
    			$req_ora = $con_ora->query('SELECT * FROM icoton.tbl_caisses');
    			// requête d'une table e la base SQL Server
    			$req_ico = $con_ico->query('SELECT * FROM A6_NomenclaturePontBascule.C_Caisses');
    			$i=1;
     
    			if(isset($_POST['valider']))
    			{
    				try { 
    					while ( $caisse = $req_ora->fetch())
    					{
    						echo $i;
    						$stmt = $con_ico->prepare("INSERT INTO A6_NomenclaturePontBascule.C_Caisses (IdTypeCaisse,  CodeCaisse, VersionStamp) VALUES (:IdTypeCaisse, :CodeCaisse, :VersionStamp)");
     
    						$stmt->execute(array(
    							':IdTypeCaisse' => $caisse["TY_CAIS"] , 
    							':CodeCaisse' => $caisse["ID_CAIS"],
    							':VersionStamp' => $caisse["TY_CAIS"] 
    						));
    						$i++;
    					}
    					$nb_insert = $stmt->rowCount();
    					echo $nb_insert.' insertion effectuée<br/>';
    				} catch (Exception $e) {
    					//s'il y a un problème PHP ou SQL, tout s'affichera ici
    					echo "Erreur ! " . $e->getMessage() . "<br/>";
    				}
    			}
    		?>
     
    		<div align="center">
    			<form name="envoie" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>" >
    				<input type="submit" name="valider" value="Valider">
    			</form>
     
    		</div>
    	</body>
    </html>

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Je suppose que tu utilises PDO. As-tu activé les exceptions ? Par défaut, PDO est en mode silencieux et donc ne retourne aucun message d'erreur en cas de problème.

    Au passage, à quoi te sert ta requête $req_ico ? Tu ne lis jamais les résultats.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 125
    Par défaut
    J'utilise effectivement PDO.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $con_ora = new PDO($lien_base, $utilisateur, $motdepasse, [
                PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
                PDO::ATTR_EMULATE_PREPARES   => false
                ]);
     
    $con_ico = new PDO ("odbc:Driver={SQL Server};Server=$hostname;Database=$dbname; Uid=$username;Pwd=$pw;");
    Avec la chaine $con_ico, je ne sais pas comment activer les exceptions, en supposant que l'activation consiste à utiliser PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION.

    le code que j'ai présenter n'est pas complet c'est pour cela que la requête $req_ico n'est pas lu, mais dans le code complet, je l'utilise pour m'assure qu'il y'a quand même des données dans la table.

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Citation Envoyé par ibram_im Voir le message
    Avec la chaine $con_ico, je ne sais pas comment activer les exceptions, en supposant que l'activation consiste à utiliser PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
    Tu peux juste l'ajouter en attribut après la connexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $con_ico = new PDO ("odbc:Driver={SQL Server};Server=$hostname;Database=$dbname; Uid=$username;Pwd=$pw;");
    $con_ico->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 125
    Par défaut
    En ajoutant le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $con_ico->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    j'obtient un message d'erreur:
    Erreur ! SQLSTATE[HY000]: General error: 0 [Microsoft][ODBC SQL Server Driver]La connexion est occupée avec les résultats d'un autre hstmt (SQLExecute[0] at ext\pdo_odbc\odbc_stmt.c:254)

Discussions similaires

  1. Transfert de données d'Oracle vers SQLServer
    Par thatsallfunk dans le forum Pentaho
    Réponses: 2
    Dernier message: 14/04/2010, 20h59
  2. Extraction de donnée d'Oracle vers Excel
    Par risyalgy dans le forum Oracle
    Réponses: 0
    Dernier message: 09/07/2009, 15h24
  3. exporter des données de Oracle vers CVS
    Par kinkichin dans le forum SQL
    Réponses: 2
    Dernier message: 23/06/2009, 08h45
  4. Réponses: 2
    Dernier message: 26/02/2008, 13h59
  5. Réponses: 1
    Dernier message: 12/08/2005, 16h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo