Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/11/2011, 19h11   #1
Candidat au titre de Membre du Club
 
Inscription : octobre 2008
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 34
Points : 12
Points : 12
Envoyer un message via MSN à lamouche42
Par défaut bindValue, bindParam, PDO::PARAM_INT

Bonjour à tous,

tout d'abord, voici mon code :
Code :
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
lamouche42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2011, 19h15   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
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 :
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
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2011, 20h52   #3
Candidat au titre de Membre du Club
 
Inscription : octobre 2008
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 34
Points : 12
Points : 12
Envoyer un message via MSN à lamouche42
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?
lamouche42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2011, 21h05   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
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éé
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2011, 09h26   #5
Candidat au titre de Membre du Club
 
Inscription : octobre 2008
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 34
Points : 12
Points : 12
Envoyer un message via MSN à lamouche42
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...
lamouche42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2011, 09h44   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
je parle de

Code :
$exist = $bdd->query('SELECT COUNT(*) FROM taux WHERE objet = '.$id)->fetchColumn();
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2011, 09h57   #7
Candidat au titre de Membre du Club
 
Inscription : octobre 2008
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 34
Points : 12
Points : 12
Envoyer un message via MSN à lamouche42
ok merci vais modifier ca
lamouche42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h49.


 
 
 
 
Partenaires

Hébergement Web