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 :

bindValue, bindParam, PDO::PARAM_INT [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 73
    Par défaut bindValue, bindParam, PDO::PARAM_INT
    Bonjour à tous,

    tout d'abord, voici mon code :
    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
     
    	if(isset($_POST['submittaux']))		// Enregistrement des MU dans la bdd
    	{
    		$modif = $bdd->prepare('UPDATE taux SET auction_rate= :auction, buy_rate= :buy, date_rate=now() WHERE objet = :id');
    		$insert = $bdd->prepare('INSERT INTO taux SET objet = :id, auction_rate= :auction, buy_rate= :buy');
    		$i=0;
    		while(isset($_POST['auction'.$i]))
    		{
    			if($_POST['auction'.$i]>0)
    			{
    				$id = $_POST['id'.$i];
    				$buy = $_POST['buy'.$i] * 100;
    				$auction = $_POST['auction'.$i] * 100;
    				$exist = $bdd->query('SELECT COUNT(*) FROM taux WHERE objet = '.$id)->fetchColumn();
    				if($exist)
    				{
    					try
    					{
    						$modif->bindParam(':id', $id, PDO::PARAM_INT);
    						$modif->bindParam(':buy', $buy, PDO::PARAM_INT);
    						$modif->bindParam(':auction', $auction, PDO::PARAM_INT);
    						$modif->execute();
    					}
    					catch(Exception $e)
    					{
    						die('Erreur : '.$e->getMessage().'<br />Code : '.$e->getCode());
    					}
    				}
    				else
    				{
    					try
    					{
    						$insert->bindParam(':id', $id, PDO::PARAM_INT);
    						$insert->bindParam(':buy', $buy, PDO::PARAM_INT);
    						$insert->bindParam(':auction', $auction, PDO::PARAM_INT);					
    						$insert->execute();
    					}
    					catch(Exception $e)
    					{
    						die('Erreur : '.$e->getMessage().'<br />Code : '.$e->getCode());
    					}
    				}
    			}
    			$i++;
    		}
    		header('Location: index.php');
    	}
    en utilisant PDO:: PARAM_INT je pensais ajouter une sécurité n'autorisant pas de valeur autre que (INT), mais en fait la valeur est quand même intégrée à la BDD. le cham de la table etant un INt je me retrouve avec un 0.

    les validations de données se font seulement en amont de bindParam?

    et pour finir, quel est la difference entre bindParam et bindValue?

    merci pour vos reponses

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par lamouche42 Voir le message
    en utilisant PDO:: PARAM_INT je pensais ajouter une sécurité n'autorisant pas de valeur autre que (INT), mais en fait la valeur est quand même intégrée à la BDD. le cham de la table etant un INt je me retrouve avec un 0.

    les validations de données se font seulement en amont de bindParam?
    normal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var_dump((int) 'test');
    // int(0)
    Citation Envoyé par lamouche42 Voir le message
    et pour finir, quel est la difference entre bindParam et bindValue?

    merci pour vos reponses
    bindParam c'est avec une variable en référence (donc utilisable après)
    bindValue c'est juste avec une valeur

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 73
    Par défaut
    merci pour ta reponse

    donc dans mon cas il est preferable d'utiliser bindValue car il s'agit d'une valeur de ma bdd et non d'un parametre c'est ca?

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par lamouche42 Voir le message
    merci pour ta reponse

    donc dans mon cas il est preferable d'utiliser bindValue car il s'agit d'une valeur de ma bdd et non d'un parametre c'est ca?
    oui

    par contre ton code n'est pas securise tu doit faire pdo->quote pour protege tes valeurs $_POST ou utiliser un requête préparéé

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 73
    Par défaut
    Bonjour,
    Parles tu pour la requete $exist ou j'utilise la variable $id comme clause WHERE ?

    car les deux autres sont bien préparées je pense ...

    si c'est cette requete, je ne l'ai pas sécurisée car je ne pensais pas qu elle pose probleme etant donné que c'est juste une requete de recherche et non de modification...

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    je parle de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $exist = $bdd->query('SELECT COUNT(*) FROM taux WHERE objet = '.$id)->fetchColumn();

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 73
    Par défaut
    ok merci vais modifier ca

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PDO] BindParam [PHP]
    Par jlnikko dans le forum Interfaces de programmation
    Réponses: 0
    Dernier message: 05/03/2009, 15h11
  2. [PDO] PDO, bindParam et float
    Par gwendal84 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 03/10/2007, 11h34
  3. [PDO] et bindValue qui ne semble pas fonctionner
    Par Tommyl dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 31/10/2006, 16h12
  4. [Système] PDO et bindParam() erreur.
    Par Rohann dans le forum Langage
    Réponses: 1
    Dernier message: 08/09/2006, 18h18
  5. [SQL] [php] PDO - fonction BindParam
    Par fadeninev dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 23/06/2006, 15h36

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