Connexion PDO et recupération erreur

Messages postés
132
Date d'inscription
mardi 24 décembre 2002
Statut
Membre
Dernière intervention
17 mai 2019
- - Dernière réponse : jordane45
Messages postés
25629
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 mai 2019
- 19 févr. 2019 à 20:14
Bonjour,

J'ai un problème avec les retour erreur de traitement avec PDO
j'ai créer une base avec un champ INT et j’insère du varchar pour faire plante l'instruction
Si je teste en local avec PHP 7.2.4 j'ai bien les retour en :
- erreur2

par contre chez 1and1 mutualise
en PHP 7.1.26 j'ai toujours le retour comme quoi l'instruction est valide (ok)

alert("si quelqu'un pourrait m'aiguiller");
Beau temps belle mer.
Jorgio

<?php

/* CREATE TABLE `test` (
`id` int(11) NOT NULL,
`champ_integer` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ALTER TABLE `test`
ADD PRIMARY KEY (`id`);

ALTER TABLE `test`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=0; */

$host  = "host";
$login = "login";
$pass  = "pass";
$base  = "databasetest";

try {
    $dns           = 'mysql:host=' . $host . ';dbname=' . $base;
    $arrExtraParam = array(
        PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
    );
    $pdo           = new PDO($dns, $login, $pass, $arrExtraParam);
}
catch (PDOException $e) {
    echo "Erreur1";
}

// Test erreur 1
$sql = "insert test (champ_integer) values ('');";
if ($pdo->exec("$sql")) {
    echo 'ok';
} else {
    echo 'erreur2';
}

// Test erreur 2
try {
    $pdo->exec("$sql");
}
catch (PDOException $e) {
    echo "erreur3";
}

?>



--
Afficher la suite 

Votre réponse

3 réponses

Messages postés
25629
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 mai 2019
311
0
Merci
Bonjour,

Il faut activer les erreurs PDO et placer CHAQUE requête dans des blocs TRY/CATCH
Regarde ici : http://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs

Et au passage http://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Commenter la réponse de jordane45
Messages postés
132
Date d'inscription
mardi 24 décembre 2002
Statut
Membre
Dernière intervention
17 mai 2019
0
Merci
Salut Jordan

Même problème toujours pas de bug avec du string sur du integer

le 20/02 je passe 1and1 en 7.3 en espérant que ça sera bon

Beau Temps Belle Mer
Jorgio
--
Commenter la réponse de cs_eli42
Messages postés
132
Date d'inscription
mardi 24 décembre 2002
Statut
Membre
Dernière intervention
17 mai 2019
0
Merci
Bonjour,

Je viens de faire un test tout bête depuis la console de PHPAmin de 1and
j'ai crée une table avec 1 integer, 1 decimal 12,2 et 1 varchar
en sql :

INSERT INTO `test` (`inte`, `floats`, `txt`) VALUES ('', '', '');

Ben ça passe donc je ne vois qu'une solution, après l'instruction je vais devoir faire un select sur l'enregistrement et vérifier le contenu avant de poursuivre.

Alert('Beau temps belle mer')
Jorge

--
jordane45
Messages postés
25629
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 mai 2019
311 -
Bonjour,
Attention, une valeur "vide" n'est pas nécessairement une erreur (selon comment tu as créé ta bdd).

Quoi qu'il en soit, la vérification se fait AVANT l'insertion.. pas après.
En PDO tu disposes du BINDPARAM pour gérer le "type" de variable.
Commenter la réponse de cs_eli42