Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou tentando fazer um relacionamento de posts com tags.
Estou fazendo dessa forma:
$list = explode(',', $tags);
foreach ($list as $s) {
$like[] = "tags LIKE '%$s%'";
}
if(sizeof($like)){
$string = " AND ".implode(" OR ", $like);
}
$sel_not_rel = mysql_query("SELECT id, titulo, cartola, imagem FROM tbl_noticias WHERE id != \"" . anti_sql_injection($id) . "\" $string ORDER BY data DESC LIMIT 2") or die (mysql_error());Como posso fazer pra resolver esse problema?
O resultado é esse:
SELECT id, titulo, cartola, imagem FROM tbl_noticias WHERE id != "6631" AND tags LIKE '%ativistas%' OR tags LIKE '%greenpeace%' OR tags LIKE '%russia%' ORDER BY data DESC LIMIT 3
a forma que encontrei foi depois da consulta e antes de exibir os resultados, é fazer um if:
if($row_not_rel['id']!=$id){
//resultados...
}
troca:
if(sizeof($like)){
$string = " AND ".implode(" OR ", $like);
}
$sql = "SELECT id, titulo, cartola, imagem FROM tbl_noticias WHERE id != \"" . anti_sql_injection($id) . "\" $string ORDER BY data DESC LIMIT 2";por $string = implode(" OR ", $like);
}
$sql = "SELECT id, titulo, cartola, imagem FROM tbl_noticias WHERE id != \"" . anti_sql_injection($id) . "\" AND ( $string ) ORDER BY data DESC LIMIT 2";Tente assim:
$list = explode(',', $tags);
$string = '';
foreach ($list as $s) {
$like[] = "tags LIKE '%$s%'";
}
if(sizeof($like)){
$string = " AND ".implode(" OR ", $like);
}
$sel_not_rel = mysql_query("SELECT id, titulo, cartola, imagem FROM tbl_noticias WHERE id != " . (int)$id . $string ." ORDER BY data DESC LIMIT 2") or die (mysql_error());>
a única coisa que fiz foi colocar um parênteses.
Certo!
Dessa forma funcionou. Mais simples impossível...
obrigado.
para ficar mais simples de analisarmos.
troque:
$sel_not_rel = mysql_query($sql) or die (mysql_error());e poste o resultado do echo da variavel $sql.