Connexion PDO et recupération erreur

Messages postés
133
Date d'inscription
mardi 24 décembre 2002
Statut
Membre
Dernière intervention
21 juillet 2019
- - Dernière réponse : jordane45
Messages postés
26505
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 octobre 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 

3 réponses

Messages postés
26505
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 octobre 2019
316
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
133
Date d'inscription
mardi 24 décembre 2002
Statut
Membre
Dernière intervention
21 juillet 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
133
Date d'inscription
mardi 24 décembre 2002
Statut
Membre
Dernière intervention
21 juillet 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
26505
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 octobre 2019
316 -
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