ecrire une variable dans une base de donnée

Petit nouveau ! | 3 Messages

12 sept. 2012, 08:13

bonjour,

j'ai un fichier php
<?php
	try
		{
			$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
		}
	catch(Exception $e)
		{
			die('Erreur : '.$e->getMessage());
		}
	$nom =" pascal";
	echo $nom;
	$bdd->exec('INSERT INTO resultats(nom, description, auteur) VALUES(\'$nom\', \'triplettes\', \'finale\')');
	echo $nom;
?>
je voudrais avoir pascal dans ma base de données, mais je n'arrive a ecrire que $nom

comment faire ?

Eléphant du PHP | 229 Messages

12 sept. 2012, 08:25

Bonjour,
essais
 "INSERT INTO resultats(nom, description, auteur) VALUES(".$nom." \'triplettes\', \'finale\')');"
Bon codage.

ViPHP
xTG
ViPHP | 7331 Messages

12 sept. 2012, 08:55

Eh oh hophophop ! Et les injections sql ?

Déjà le problème : interprétation de la variable.
Petit exemple avec commentaire indiquant le résultat :
$var = 'test';
echo 'Ceci est un $var'; // Ceci est un $var
echo "Ceci est un $var"; // Ceci est un test
echo 'Ceci est un ' . $var; // Ceci est un test
echo "Ceci est un " . $var; // ceci est un test
Ensuite la protection dans une requête se fait soit par une requête préparée (PDO::prepare() avec l'utilisation des fonctions d'injection associées) soit avec une fonction exec() mais en utilisant PDO::quote() sur les variables injectées pour les protéger.

Eléphant du PHP | 229 Messages

12 sept. 2012, 09:29

Oui j ai pas parlé Sécurité dsl

Petit nouveau ! | 3 Messages

12 sept. 2012, 18:45

en mettant:
<?php
	try
		{
			$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
		}
	catch(Exception $e)
		{
			die('Erreur : '.$e->getMessage());
		}
	$nom =" pascal";
	echo $nom;

$bdd->exec("INSERT INTO resultats(nom, description, auteur) VALUES(".$nom." \'triplettes\', \'finale\')");
	echo $nom;
?>
j'&i deja un premier resultat: je n'ai plus $nom dans ma base. Le probleme, maintenant, c'est que rien ne s'inscrit

pascal

ViPHP
xTG
ViPHP | 7331 Messages

12 sept. 2012, 19:55

Tu aurais lu mon intervention que tu aurais ta réponse dans les exemples de la documentation.
Ensuite la protection dans une requête se fait soit par une requête préparée (PDO::prepare() avec l'utilisation des fonctions d'injection associées) soit avec une fonction exec() mais en utilisant PDO::quote() sur les variables injectées pour les protéger.

Petit nouveau ! | 3 Messages

12 sept. 2012, 22:13

[quote="xTG"]Tu aurais lu mon intervention que tu aurais ta réponse dans les exemples de la documentation.

j'ai fait ma base avec des requetes prepares, mais ca ne me dit toujours pas pourquoi mon code ne fonctionne pas;

et comme j'aime bien comptrendre;
et surtout savoir quelle betise j'ai faite pour ne pas la renouveler!!!

pascal

Eléphant du PHP | 229 Messages

13 sept. 2012, 06:38

Peut etre addslashes(), certains caractères spéciaux peuvent faire échouer la requète.

ViPHP
xTG
ViPHP | 7331 Messages

13 sept. 2012, 09:04

Requête préparée et toujours rien mais pas d'erreur ?
Jettes alors un oeil au fichier error.log de PHP, ou bien actives le niveau d'erreur dans le php.ini

Concernant ton erreur, sans message d'erreur je pourrait te dire que tu en as fait plein... C'est pour cela que je t'ai redirigé vers les bonnes fonctions.
Pour ton dernier code il manque principalement la vérification des variables et leur protection.
De plus sans cette protection cela peut engendrer une erreur de syntaxe au sein de la requête SQL.