requete mysql en php

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : requete mysql en php

Re: requete mysql en php

par Doogy1st » 24 août 2010, 02:23

ça marche bien effectivement. Une erreur de ma part. Merci bien.

Re: requete mysql en php

par stealth35 » 23 août 2010, 23:52

Re: requete mysql en php

par Doogy1st » 23 août 2010, 22:08

Ok, mais c'est comment la syntaxe exacte sachant qu'on est en php et que j'utilise PDO.
$register = $bdd->prepare('SELECT * FROM '.$ma_table.' WHERE machin = ?');
...
Parce que la syntaxe ci dessus ne marche pas apparemment.
???

Merci.

Re: requete mysql en php

par stealth35 » 23 août 2010, 00:02

Merci stealth35 :) . Effectivement on ne peut pas avoir un nom de table variable. En fait je voulais celà parce que j'ai plusieurs tables qui ont un certain nombre de champs en commun #-o . Et là je n'avais plus que deux solutions:
1) Utiliser une requête pour chaque table;
2) Optimiser ma base pour n'avoir qu'une seule table ( ça sera un peu le brouhaha mais bon! )
J'ai opté pour la première solution, ma priorité étant la clarté.
Merci bien à tous et really sorry pour le retard 8-|.
rien ne t'empêche de mettre une variable dans ta requête :wink:
SELECT * FROM $matable WHERE machin = ?

Re: requete mysql en php

par Doogy1st » 22 août 2010, 18:21

Merci stealth35 :) . Effectivement on ne peut pas avoir un nom de table variable. En fait je voulais celà parce que j'ai plusieurs tables qui ont un certain nombre de champs en commun #-o . Et là je n'avais plus que deux solutions:
1) Utiliser une requête pour chaque table;
2) Optimiser ma base pour n'avoir qu'une seule table ( ça sera un peu le brouhaha mais bon! )
J'ai opté pour la première solution, ma priorité étant la clarté.
Merci bien à tous et really sorry pour le retard 8-|.

Re: requete mysql en php

par stealth35 » 14 août 2010, 20:22

ca marche pas comme ca :wink:
les requêtes préparé c'est que sur les valeur de requête (VALUE, SET, WHERE....) après le FROM (en gros)

pourquoi ?
parce que mysql optimise la requête par rapport a la table donc il a besoin de savoir quelle table ;)

Re: requete mysql en php

par xTG » 14 août 2010, 20:11

C'est peut être un mot réservé.
Essayes de le changer par un autre mot dont tu seras sûr qu'il n'est pas utilisé par le SGBD.

Re: requete mysql en php

par Doogy1st » 14 août 2010, 19:59

J'ai trouvé le problème mais je sais pas encore comment le résoudre.
Il s'agit de ':type' dans la requete prepare. Elle n'est pas remplacée par sa valeur lors de l'appel de execute.

requete mysql en php

par Doogy1st » 14 août 2010, 19:36

Salut à tous. J'ai un petit problème. Il s'agit d'un formulaire d'insertion d'article dans ma base de données. Mais ça marche pas (aucun changement dans la base) sans pour autant afficher d'erreur! Comment je fais pour corriger maintenant! :(
Voici le code:
                        /*Connection à la base de données et affichage d'erreur s'il y a*/
			try { $bdd = new PDO ('mysql:host=localhost;dbname=legrain','root',''); }
			catch (Exception $e) { die ('Erreur de connexion à la base: '.$e->getMessage()); }
		
		
		if ( isset($_POST['type']) && $_POST['type'] != '' && isset($_POST['sujet']) && $_POST['sujet'] != '' && 
                            isset($_POST['auteur']) && $_POST['auteur'] != '' &&     isset($_POST['contenu']) && $_POST['contenu'] != '')
		{
			if ( $_POST['type'] == 'astuces' || $_POST['type'] == 'liens')
			{
				/* Actualisation de la base pour le nouvel article qui vient d'être envoyé*/
			
				$register = $bdd->prepare('INSERT INTO :type (sujet,auteur,date_creation,contenu) VALUES (:sujet, :auteur, NOW(), :contenu)')
                                                                                   or die (print_r($bdd->errorInfo()));
				$register->execute(array(
							'type' => htmlspecialchars($_POST['type']),
							'sujet' => htmlspecialchars($_POST['sujet']),
							'auteur' => htmlspecialchars($_POST['auteur']),
							'contenu' => htmlspecialchars ($_POST['contenu']),
							));
				$register->CloseCursor();
				/*Redirection vers le nouveau sujet*/
				$id = $bdd -> lastInsertId();
				header('Location: ../../'.$_POST['type'].'.php?id='.$id);
			}
			
			else 
			{
				if (( $_POST['type'] == 'articles' || $_POST['type'] == 'biographies') && (isset($_POST['entete']) && $_POST['entete'] != '' ))
				{
					/* Actualisation de la base pour le nouvel article qui vient d'être envoyé*/
				
					$register = $bdd->prepare('INSERT INTO :type (sujet,auteur,date_creation, entete, contenu) 
                                                               VALUES (:sujet, :auteur, NOW(), :entete, :contenu)') or die (print_r($bdd->errorInfo()));
					$register->execute(array(
								'type' => htmlspecialchars($_POST['type']),
								'sujet' => htmlspecialchars($_POST['sujet']),
								'auteur' => htmlspecialchars($_POST['auteur']),
								'entete' => htmlspecialchars($_POST['entete']),
								'contenu' => htmlspecialchars ($_POST['contenu']),
								));
					$register->CloseCursor();
				/*Redirection vers le nouveau sujet*/
				$id = $bdd -> lastInsertId();
				header('Location: ../../'.$_POST['type'].'.php?id='.$id);
				}
				else
				{
					echo 'Ce type d\'article n\'existe pas!';
					include_once('myeditor.html');
				}
			}
		}
		else
		{
			include_once('myeditor.html');
		}
				
?>
Merci d'avance. 8-|