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 26/06/2011, 16h39   #1
Invité de passage
 
Inscription : novembre 2007
Messages : 14
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 14
Points : 1
Points : 1
Par défaut connexion mysql

Bonjour,

J'ai installé wampserver sur mon ordi avec mysql pour faire un petit programme php voici le code :

Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
$id_resultats = '';
$etp=$_POST['etp'];
$prem=$_POST['prem'];
 
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
 $bdd = new PDO('mysql:host=localhost;dbname=tour', 'root', '', $pdo_options);
 
 
if($etp != '' && $prem !='' )
{
$requete = "INSERT INTO `etape` ( `id` , `Num_etape` , `Dossard` , `prix`) VALUES (NULL , '$etp', '$prem', '1000')";
 
}	
 
?>

La requête fonctionne si je l’exécute dans MySQL, mais ici, elle n'insère pas les valeurs dans la table. Je pense que la façon dont je fais ma connexion n'est pas correcte.
toonpax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2011, 16h54   #2
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
Le code proposé alimente une variable php $requete mais rien n'est exécuté...
PDO::prepare et PDOStatement->execute sont les étapes qui t'intéressent.
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/06/2011, 16h54   #3
Modérateur
 
Avatar de Bisûnûrs
 
Josselin
Développeur Web
Inscription : janvier 2004
Messages : 9 050
Détails du profil
Informations personnelles :
Nom : Josselin
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2004
Messages : 9 050
Points : 12 181
Points : 12 181
Il manque l'exécution de la requête, là tu as juste mis une chaine dans une variable.
Je te laisse regarder la documentation de PDO pour savoir comment on exécute une requête.
Je te conseille également de te renseigner sur les problèmes de sécurité liés aux injections SQL.
Bisûnûrs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2011, 16h57   #4
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
Citation:
Envoyé par Bisûnûrs Voir le message
Je te conseille également de te renseigner sur les problèmes de sécurité liés aux injections SQL.
Très bon conseil, c'est d'ailleurs pour ça, toonpax, que je te renvoie vers PDO prepare.
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2011, 19h04   #5
Invité de passage
 
Inscription : novembre 2007
Messages : 14
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 14
Points : 1
Points : 1
Merci à vous 2 pour votre aide. J'aurai une autre question : serait-il possible de ne pas utiliser le pdo et faire la connexion de la manière suivante ?

Code php :
1
2
3
4
$dbhost="localhost";
$user="root";
$code="";
$usebdd="tour";

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
$connexion= mysql_connect ("$dbhost", "$user", "$code");
echo $connexion;
if (!$connexion)
	{
	echo "impossible d'effectuer la connexion";
	exit;
	}
 
$db=@mysql_select_db("$usebdd",$connexion);
if (!$db)
   {
   echo "impossible de selectionner cette base de donnees";
   exit;
   }
toonpax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2011, 20h43   #6
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
Ben évidemment c'est possible...
La question serait plutôt pourquoi ne pas utiliser PDO, surtout que tu sembles être en début de projet.

PDO permet une utilisation simple des requêtes "préparées", ce qui permet notamment d'éviter sans y penser les problèmes de type injection SQL.
Couplé avec MySql, je ne sais si les requêtes préparées améliorent drastiquement la scalabilité de l'appli, mais avec un SGBDR tel qu'oracle c'est indispensable.

Indépendemment, PDO est une valeur plus que montante pour connecter PHP à une base... Faire l'effort de comprendre son utilisation ne pourra qu'être bénéfique.

Si tu ne souhaites pas utiliser PDO, il faut alors utiliser mysql_real_escape_string pour éviter les problèmes d'injection SQL.
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2011, 17h15   #7
Invité de passage
 
Inscription : novembre 2007
Messages : 14
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 14
Points : 1
Points : 1
Voila, après avoir lu les documents sur pdo, je trouve cela plus intéressant d'utiliser cela. La connexion se passe bien. J'aurais juste une petite question.
J'ai récupéré ces 2 variables :

Code :
1
2
3
 
$etp=$_POST['etp'];
$prem=$_POST['prem'];
Ma requête est la suivante, comment utilise-t-on les variables $ dans la requête, s'il vous plait ? :

Code :
1
2
3
 
$bdd->exec('INSERT INTO `etape` ( `id` , `Num_etape` , `Dossard` , `prix` )
																VALUES (NULL , $etp,$prem, 1000)');
toonpax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2011, 17h21   #8
Modérateur
 
Avatar de Bisûnûrs
 
Josselin
Développeur Web
Inscription : janvier 2004
Messages : 9 050
Détails du profil
Informations personnelles :
Nom : Josselin
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2004
Messages : 9 050
Points : 12 181
Points : 12 181
Il y a des exemples d'utilisation de la méthode prepare() dans le lien au-dessus.

Tu peux aussi utiliser PDOStatement::bindParam().
D'ailleurs .. A quoi correspond ta méthode exec() ..?
Bisûnûrs est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h57.


 
 
 
 
Partenaires

Hébergement Web