Connexion PDO et recupération erreur

cs_eli42 Messages postés 143 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 juillet 2023 - 17 févr. 2019 à 20:53
jordane45 Messages postés 38185 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 mai 2024 - 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";
}

?>



--

3 réponses

jordane45 Messages postés 38185 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 mai 2024 344
17 févr. 2019 à 21:35
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
0
cs_eli42 Messages postés 143 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 juillet 2023 1
18 févr. 2019 à 22:29
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
--
0
cs_eli42 Messages postés 143 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 juillet 2023 1
19 févr. 2019 à 19:57
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

--
0
jordane45 Messages postés 38185 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 mai 2024 344
19 févr. 2019 à 20:14
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.
0
Rejoignez-nous