Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

O resultado da pesquisa PHP produz um resultado diferente se você fornecer apenas uma letra


Sua consulta sql precisa agrupar suas condições corretamente
$query=mysql_query("select * from persons where status like 'found' and (firstname like '%$searchtext%' or lastname like '%$searchtext%') order by date desc LIMIT $start,$per_page ");

O que você estava fazendo é equivalente a algo assim no código:
if (status == 'found' && firstname like 'a')
{
    return row;
}
else if (lastname like 'a')
{
    return row;
}

Se você vir isso, pode ser um pouco mais claro, se a primeira condição falhar (a única que verifica se status == 'found' então ele pulará para a próxima condição (após a instrução OR) e apenas verificará se lastname fósforos.

Você precisará agrupar sua condição de instrução select para que ela a verifique corretamente:
...where status like 'found' and (firstname like '%$searchtext%' or lastname like '%$searchtext%') order by...

Nesse caso, agrupamos firstname e lastname condições juntas (entre parênteses) para que toda a condição OR resulte em uma única resposta verdadeira/falsa, essa resposta é então aplicada ao status verifique depois.