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.

Était-ce utile?

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";
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top