PDOException:

Résolu/Fermé
clement62910 Messages postés 41 Date d'inscription mardi 22 octobre 2013 Statut Membre Dernière intervention 20 mars 2019 - Modifié par jordane45 le 4/07/2016 à 17:57
clement62910 Messages postés 41 Date d'inscription mardi 22 octobre 2013 Statut Membre Dernière intervention 20 mars 2019 - 21 juil. 2016 à 14:53
Bonjour,
Voila mon erreur :

Mon code source :


<?php

session_start();

if(isset($_SESSION["username"])){
if(isset($_GET["action"])){
if($_GET["action"]=="add"){


if(isset($_POST["submit"])){

$title=$_POST["title"];
$description=$_POST["description"];
$price=$_POST["price"];

if($title&&$description&&$price){

try
{
$db = new PDO("mysql:host=localhost;dbname=jevend-jachete","root","");
$db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(Exception $e){

echo"Une erreur est survenue !";
die();

}

$insert = $db->prepare("INSERT INTO products VALUES('',$title','$description','$price')");
$insert->execute();

}else{

echo"Veuillez remplir tous les champs!";
}

}


?>



<form action="" method="post">
<h3>Titre:</h3><input type="text" name="title"/>
<h3>Description:</h3><input type="text" name="description"/>
<h3>Prix:</h3><input type="text" name="price"/>

<input type="submit" name="submit"/>
</form>
<?php

}else if ($_GET["action"]=="modify"){

}else if ($_GET["action"=="delete"]);


else{

die("Une erreur s'est produite!");


}
}else{



}
}else{
header("location:../index.php");

}

?>
 <link href="../style/bootstrap.css" type="text/css" rel="stylesheet">
<h1>Bienvenue : <?php echo $_SESSION["username"]; ?></h1>
<br/>
<a href="?action=add">Ajouter</a>
<a href="?action=modify">Modifier</a>
<a href="?action=delete">Supprimer</a>


Ligne 32 :
$insert->execute();


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.

4 réponses

ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
Modifié par gravgun le 4/07/2016 à 11:18
'lut
Emballes ton
$insert->execute();
dans un bloc
try
/
catch(PDOException &e) { echo "PDOException: " . $e->getMessage(); exit(); }
Pour savoir ce qui ne va pas.

Par ailleurs
$insert = $db->prepare("INSERT INTO products VALUES('',$title','$description','$price')"); 
Non de non de NON de NON! On insère JAMAIS du texte directement dans une requête préparée, c'est justement pour ça qu'elle est préparée! Remplace ces lignes par
$insert = $db->prepare("INSERT INTO products VALUES('',:title,:description,:price)");
$insert->execute([
  ':title' => $title,
  ':description' => $description,
  ':price' => $price
]); 
car dans ton cas, vu que les strings insérés viennent directement de l'utilisateur, tu te rends sujet aux injections SQL, allant de l'ajout supplémentaire de lignes dans ta table à la destruction totale de l'intégralité de ta base de données. À bon entendeur.
from human import idiocy
del idiocy
0
clement62910 Messages postés 41 Date d'inscription mardi 22 octobre 2013 Statut Membre Dernière intervention 20 mars 2019 12
4 juil. 2016 à 12:03
$insert = $db->prepare("INSERT INTO products VALUES('',:title,:description,:price)");
$insert->execute([
':title' => $title,
':description' => $description,
':price' => $price
]);


J'ai mis sa mais maintenet j'ai cette erreur :

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '' for column 'id' at row 1' in C:\wamp64\www\Site\admin\admin.php on line 34


PDOException: SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '' for column 'id' at row 1 in C:\wamp64\www\Site\admin\admin.php on line 34
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228 > clement62910 Messages postés 41 Date d'inscription mardi 22 octobre 2013 Statut Membre Dernière intervention 20 mars 2019
4 juil. 2016 à 15:20
Si tu lisais le message de l'exception, peut-être que tu comprendrais ton erreur...
0
clement62910 Messages postés 41 Date d'inscription mardi 22 octobre 2013 Statut Membre Dernière intervention 20 mars 2019 12
Modifié par jordane45 le 4/07/2016 à 17:58
??? je comprent pas l'exeption
Fatal error: in C:\wamp64\www\Site\admin\admin.php on line 32
PDOException: in C:\wamp64\www\Site\admin\admin.php on line 32

# Time Memory Function Location
1 0.0003 252800 {main}( ) ...\admin.php:0

2 0.0022 262952 execute ( ) ...\admin.php:32


le code source :

<?php

session_start();

if(isset($_SESSION["username"])){
if(isset($_GET["action"])){
if($_GET["action"]=="add"){


if(isset($_POST["submit"])){

$title=$_POST["title"];
$description=$_POST["description"];
$price=$_POST["price"];

if($title&&$description&&$price){

try
{
$db = new PDO("mysql:host=localhost;dbname=jevend-jachete","root","");
$db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(Exception $e){

echo"Une erreur est survenue !";
die();

}

$insert = $db->prepare("INSERT INTO products VALUES('',$title','$description','$price')");
$insert->execute();

}else{

echo"Veuillez remplir tous les champs!";
}

}


?>



<form action="" method="post">
<h3>Titre:</h3><input type="text" name="title"/>
<h3>Description:</h3><input type="text" name="description"/>
<h3>Prix:</h3><input type="text" name="price"/>

<input type="submit" name="submit"/>
</form>
<?php

}else if ($_GET["action"]=="modify"){

}else if ($_GET["action"=="delete"]);


else{

die("Une erreur s'est produite!");


}
}else{



}
}else{
header("location:../index.php");

}

?>
 <link href="../style/bootstrap.css" type="text/css" rel="stylesheet">
<h1>Bienvenue : <?php echo $_SESSION["username"]; ?></h1>
<br/>
<a href="?action=add">Ajouter</a>
<a href="?action=modify">Modifier</a>
<a href="?action=delete">Supprimer</a>


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228 > clement62910 Messages postés 41 Date d'inscription mardi 22 octobre 2013 Statut Membre Dernière intervention 20 mars 2019
4 juil. 2016 à 17:57
Il va bien falloir la comprendre...
En français ça donne:
PDOException: SQLSTATE[HY000]: Erreur générale 1366 Valeur entière incorrecte: '' pour la colonne 'id' à la l'enregistrement 1 dans C:\wamp64\www\Site\admin\admin.php ligne 34

Un problème avec un paramètre de ta requête, non ? Je te laisse la trouver, c'est d'une évidence frappante.
0
clement62910 Messages postés 41 Date d'inscription mardi 22 octobre 2013 Statut Membre Dernière intervention 20 mars 2019 12
21 juil. 2016 à 14:53
Oui mais l'id est cencé ce mettre en aleatoire par a port a l'id davent ex

Prix ID Titre
15 1 tstid
13 2 tstid

Voila ID consecutif 1,2,3,4,5,6,7,8,9,10,11 etc....


Le source :
<?php

session_start();

if(isset($_SESSION["username"])){
if(isset($_GET["action"])){
if($_GET["action"]=="add"){


if(isset($_POST["submit"])){

$title=$_POST["title"];
$description=$_POST["description"];
$price=$_POST["price"];

if($title&&$description&&$price){

try
{
$db = new PDO("mysql:host=localhost;dbname=jevend-jachete","root","");
$db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(Exception $e){

echo"Une erreur est survenue !";
die();

}

$insert = $db->prepare("INSERT INTO products VALUES('','$title','$description','$price')");
$insert->execute();

}else{

echo"Veuillez remplir tous les champs!";
}

}


?>



<form action="" method="post">
<h3>Titre:</h3><input type="text" name="title"/>
<h3>Description:</h3><input type="text" name="description"/>
<h3>Prix:</h3><input type="text" name="price"/>

<input type="submit" name="submit"/>
</form>
<?php

}else if ($_GET["action"]=="modify"){

}else if ($_GET["action"=="delete"]);


else{

die("Une erreur s'est produite!");


}
}else{



}
}else{
header("location:../index.php");

}

?>
<link href="../style/bootstrap.css" type="text/css" rel="stylesheet">
<h1>Bienvenue : <?php echo $_SESSION["username"]; ?></h1>
<br/>
<a href="?action=add" rel="nofollow" target="_blank">Ajouter</a>
<a href="?action=modify" rel="nofollow" target="_blank">Modifier</a>
<a href="?action=delete" rel="nofollow" target="_blank">Supprimer</a>


L'erreur :
PDOException: SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '' for column 'id' at row 1 in C:\wamp64\www\Site\admin\admin.php on line 32

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '' for column 'id' at row 1' in C:\wamp64\www\Site\admin\admin.php on line 32



Ligne 32 :
$insert = $db->prepare("INSERT INTO products VALUES('','$title','$description','$price')");
$insert->execute();
0