Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

Ascensao

WHERE

Mensagens Recomendadas

Ascensao    1
Ascensao

Boas Pessoal

Tenho o seguinte código:

$query = mysql_query("SELECT ".$field." FROM tbl_movie WHERE category_1='".$genre."' ORDER BY ".$order." ".$sort."");

Mas por vezes não é necessário condição na categoria_1, qual o valor predefinido que meto na variável $genre ?

category_1 na base de dados é uma variavel do tipo INT  .

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pmg    102
pmg

Eu costumo fazer uma variável isolada para a instrução SQL. Isso torna a gestão das consultas à base de dados ligeiramente mais agradável de trabalhar :-)

$sql = "select $field from tbl_movie where 1=1 "; /* espaco dentro das aspas */
if (true) {
    $sql .= "and category_1 = '$genre' "; /* espaco dentro das aspas */
}
$sql .= "order by $order $sort";
$res = mysql_query($sql) or die(mysql_error . ' em ' . $sql);

O "where 1=1" permite que todas as condicoes tenham o mesmo formato, nomeadamente "and whetever = something"

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1125
HappyHippyHippo

@pmg :

tembem tens esta opção:

$sql = "select * from xpto ";
$cond = array(" campo=valor ");
$filtros = " order by x limit y";
if (count($cond))
  $sql = $sql . implode(" and ", $cond);
$sql.= $filtros;

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Ascensao    1
Ascensao

Não metes:

$query = mysql_query("SELECT ".$field." FROM tbl_movie ORDER BY ".$order." ".$sort."");

Necessito de meter pois ao longo do site utilizo sempre a mesma função para as query´s.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Ascensao    1
Ascensao

Eu costumo fazer uma variável isolada para a instrução SQL. Isso torna a gestão das consultas à base de dados ligeiramente mais agradável de trabalhar :-)

$sql = "select $field from tbl_movie where 1=1 "; /* espaco dentro das aspas */
if (true) {
    $sql .= "and category_1 = '$genre' "; /* espaco dentro das aspas */
}
$sql .= "order by $order $sort";
$res = mysql_query($sql) or die(mysql_error . ' em ' . $sql);

O "where 1=1" permite que todas as condicoes tenham o mesmo formato, nomeadamente "and whetever = something"

Já tinha pensado nesta solução, pensava que havia métodos mais simples mas já vi que não. Vou ter que utilizar este método, o que me acrescenta mais uma variante a entrar na função. Mas obrigado a todos na mesma  :D

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade