PHP Variável Passing não funciona em chamadas de banco de dados
-
22-07-2019 - |
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.
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";