PHP Próximo MySQL Row - Como mover o ponteiro até que a função verifique true?
Pergunta
Eu tenho um script PHP que leva um valor de uma linha no meu banco de dados MySQL, o executa através de uma função e, se determinar, é verdade que retorna um valor e, se for falso, precisará ir para o próximo valor no banco de dados e Verifique esse até que eventualmente retorne a verdade. Eu acho que preciso usar mysql_fetch_assoc, mas não tenho muita certeza de que maneira de usá -lo ... eu gostaria de postar meu código para ser mais específico, mas é muito código e a maioria não tem influência esse assunto...
Nenhuma solução correta
Outras dicas
A "função" é algo que você poderia fazer no banco de dados? É realmente ineficiente processar todas as linhas da tabela para verificar se há algum tipo de condição. É exatamente nisso que os bancos de dados são bons, a saber, processar consultas com eficiência e obter respostas para você rapidamente.
Então, eu recomendo analisar como fazer tudo isso no lado do banco de dados, para que seu código PHP esteja apenas buscando o resultado final (ou seja, linhas filtradas pela função). Talvez se você fornecer mais detalhes sobre o que sua "função" está fazendo, uma resposta mais específica poderá ser fornecida.
Você pode usar o mysql_fetch_array e basta pular os valores buscados usando $ row [id] e não $ row ['nome']. Digamos que sua função retorne true, você apenas usaria o $ Row [LastId+1].
Se o ID não estiver incremental, isso pode funcionar:
$qry_result = mysql_query($qry) or die(mysql_error());
while ($row = mysql_fetch_array($qry_result)) {
$result = yourfunction($row['whatever');
if ($result != false)
break;
}
Também há uma função PHP a seguir () que avança um ponteiro para o próximo elemento da matriz. Na sua função, você pode implementar um construtor de matrizes e depois pedalar entre os elementos com isso. Depende do que sua função realmente faz ou é o objetivo do script. Isso pode levar a alguma carga se houver muitos resultados.
- Você não deve verificar o banco de dados dessa maneira, como mencionado acima. O banco de dados tem uma pequena diferença em relação ao arquivo de texto simples.
- Você não deve ter um campo no seu banco de dados que tenha vários valores separados por Value1: Value2 | Value1: Value2 | Value1: Value2. Deve ser campos separados. O banco de dados tem uma pequena diferença do arquivo de texto sem formatação e é melhor aprender.
Você poderia tentar algo assim:
SELECT *
FROM table
WHERE field NOT LIKE '%$sessionvar:%';
Eu acho que é isso que você procura?