Pergunta

isso funciona.

function get_distinct_size_for_bracelets() {
    $sql = "SELECT DISTINCT size FROM mytable WHERE id = 27 AND type='plastic' ORDER BY size";
}

Isso não funciona e pára php mortos sem relatório de erros.

 function get_distinct_size_for_bracelets($myvalue) {
    $sql = "SELECT DISTINCT size FROM mytable WHERE id = 27 AND type=".$myvalue." ORDER BY size";
}

Eu tentei uma série de configurações e nada está funcionando.

Foi útil?

Solução

function get_distinct_size_for_bracelets($myvalue) {
    $sql = "SELECT DISTINCT size FROM mytable WHERE id = 27 AND type='".$myvalue."' ORDER BY size";
}

Você ainda precisa as aspas simples na consulta SQL.

Outras dicas

Lembre-se de citar o valor passado:

function get_distinct_size_for_bracelets($myvalue) 
{ 
$sql = "SELECT DISTINCT size FROM mytable WHERE id = 27 AND type=".$myvalue." ORDER BY size";
}

Deve ser:

function get_distinct_size_for_bracelets($myvalue) 
{ 
$sql = "SELECT DISTINCT size FROM mytable WHERE id = 27 AND type='".$myvalue."' ORDER BY size";
}

Observe as aspas simples adicionadas em type.

Você precisa de aspas simples em torno dele ainda. Então

$sql = "SELECT DISTINCT size FROM mytable WHERE id = 27 AND type='".$myvalue."' ORDER BY size";

Você não está escapando o seu valor e você está esquecendo suas aspas simples, isso seria o meu palpite. Tente:

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));
}

Isso permite que você passe um valor escaparam para a cadeia, em vez de usar concatenação.

try

function get_distinct_size_for_bracelets($myvalue) {
    $sql = "SELECT DISTINCT size FROM mytable WHERE id = 27 AND type='".$myvalue."' ORDER BY size";
}

MySQL tem diferentes tipos de dados também. E cordas necessidade de estar entre aspas também:

$sql = "SELECT DISTINCT size FROM mytable WHERE id = 27 AND type='".$myvalue."' ORDER BY size";

Ou melhor com o uso adicional do mysql_real_escape_string função :

$sql = "SELECT DISTINCT size FROM mytable WHERE id = 27 AND type='".mysql_real_escape_string($myvalue)."' ORDER BY size";
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top