Le passage de variable PHP ne fonctionne pas dans l'appel de base de données
-
22-07-2019 - |
Question
Cela fonctionne.
function get_distinct_size_for_bracelets() {
$sql = "SELECT DISTINCT size FROM mytable WHERE id = 27 AND type='plastic' ORDER BY size";
}
Cela ne fonctionne pas et arrête php mort sans rapport d'erreur.
function get_distinct_size_for_bracelets($myvalue) {
$sql = "SELECT DISTINCT size FROM mytable WHERE id = 27 AND type=".$myvalue." ORDER BY size";
}
J'ai essayé plusieurs configurations et rien ne fonctionne.
La solution
function get_distinct_size_for_bracelets($myvalue) {
$sql = "SELECT DISTINCT size FROM mytable WHERE id = 27 AND type='".$myvalue."' ORDER BY size";
}
Vous avez toujours besoin des guillemets simples dans la requête SQL.
Autres conseils
N'oubliez pas de citer la valeur transmise:
function get_distinct_size_for_bracelets($myvalue)
{
$sql = "SELECT DISTINCT size FROM mytable WHERE id = 27 AND type=".$myvalue." ORDER BY size";
}
Devrait être:
function get_distinct_size_for_bracelets($myvalue)
{
$sql = "SELECT DISTINCT size FROM mytable WHERE id = 27 AND type='".$myvalue."' ORDER BY size";
}
Notez les guillemets simples ajoutés en type
.
Vous avez toujours besoin de guillemets simples. Donc
$sql = "SELECT DISTINCT size FROM mytable WHERE id = 27 AND type='".$myvalue."' ORDER BY size";
Vous n'échappez pas à votre valeur et vous oubliez vos guillemets simples, ce serait ma supposition. Essayez:
function get_distinct_size_for_bracelets($myvalue) {
$query = sprintf("SELECT DISTINCT size FROM mytable WHERE id = 27 AND type='%s' ORDER BY size",
mysql_real_escape_string($myvalue));
}
Cela vous permet de transmettre une valeur d'échappement dans la chaîne, par opposition à l'utilisation de la concaténation.
essayer
function get_distinct_size_for_bracelets($myvalue) {
$sql = "SELECT DISTINCT size FROM mytable WHERE id = 27 AND type='".$myvalue."' ORDER BY size";
}
MySQL a aussi différents types de données. Les chaînes doivent également être placées entre guillemets:
$sql = "SELECT DISTINCT size FROM mytable WHERE id = 27 AND type='".$myvalue."' ORDER BY size";
Ou mieux si vous utilisez davantage la mysql_real_escape_string
:
$sql = "SELECT DISTINCT size FROM mytable WHERE id = 27 AND type='".mysql_real_escape_string($myvalue)."' ORDER BY size";