PHP5: Requête paramétrée et guillemets
ji_louis
-
lm88fr -
lm88fr -
Bonjour,
J'ai un problème en PHP avec une requête paramétrée dont un des paramètres peut contenir des blancs dans du texte:
public function update($table, $id, $label) {
$sql = 'UPDATE ? SET LABEL = ? WHERE ID = ?';
try {
$statement = $this->getConnexion()->prepare($sql);
$statement->execute(array($table, $label, $id));
} catch (PDOException $e) {
$this->logError($e);
throw new TechniqueException($e->getMessage(), $e->getCode().$e->getTraceAsString());
}
}
Typiquement, $table = "materiel" et $id = 4
Quand j'ai un $label du genre "Agrément pour matériels", la requête ne marche pas, mais je n'ai pas d'erreur non plus.
J'ai essayé en ajoutant des simple-quotes ' ou double-quotes " en début et fin de paramètre, mais ça plante.
Quelqu'un aurait une idée?
J'ai un problème en PHP avec une requête paramétrée dont un des paramètres peut contenir des blancs dans du texte:
public function update($table, $id, $label) {
$sql = 'UPDATE ? SET LABEL = ? WHERE ID = ?';
try {
$statement = $this->getConnexion()->prepare($sql);
$statement->execute(array($table, $label, $id));
} catch (PDOException $e) {
$this->logError($e);
throw new TechniqueException($e->getMessage(), $e->getCode().$e->getTraceAsString());
}
}
Typiquement, $table = "materiel" et $id = 4
Quand j'ai un $label du genre "Agrément pour matériels", la requête ne marche pas, mais je n'ai pas d'erreur non plus.
J'ai essayé en ajoutant des simple-quotes ' ou double-quotes " en début et fin de paramètre, mais ça plante.
Quelqu'un aurait une idée?
1 réponse
Je n'y connais pas grand chose en requête paramétrée.
Une requête classique : UPDATE materiel SET label="ca fonctionne avec des espace" WHERE id=1.
Si cela ne fonctionne pas, il faut vérifier le type de "label", si c'est bien un varchar, voir la taille du champs. Si cela n'est pas le problème je ne vois pas q'où cela pourrais venir.
Une requête classique : UPDATE materiel SET label="ca fonctionne avec des espace" WHERE id=1.
Si cela ne fonctionne pas, il faut vérifier le type de "label", si c'est bien un varchar, voir la taille du champs. Si cela n'est pas le problème je ne vois pas q'où cela pourrais venir.