PHP MySQL riga successiva - come muoversi puntatore finché funzione controlla vero?
Domanda
Ho uno script PHP che prende un valore da una riga nel mio database MySQL, gestisce tramite una funzione, e se si determina è vero restituisce un valore, e se è falso, ha bisogno di andare al prossimo valore il database e verificare che uno fino a quando alla fine si ritorna vero. Penso che ho bisogno di usare mysql_fetch_assoc, ma io non sono davvero sicuro in che modo usarla ... Vorrei poter postare il mio codice per essere più precisi, ma è un sacco di codice e la maggior parte non ha alcuna incidenza sulla questo problema ...
Nessuna soluzione corretta
Altri suggerimenti
È il qualcosa di "funzione" si potrebbe fare nel database invece? E 'molto inefficiente per elaborare ogni riga della tabella per controllare un certo tipo di condizione. Questo è esattamente ciò che i database sono bravi a, vale a dire, l'elaborazione delle query in modo efficiente e ottenere risposte al più presto.
Così mi raccomando guardando come farlo tutti sul lato database in modo che il codice PHP è solo andare a prendere il risultato finale (ossia righe filtrate dalla funzione). Forse, se si forniscono ulteriori dettagli su ciò che il vostro "funzione" sta facendo, può essere fornita una risposta più specifica.
È possibile utilizzare mysql_fetch_array, e solo saltare sui valori recuperato utilizzando $ row [id] e non $ row [ 'name']. Dite la vostra funzione restituisce true, si era appena usare $ row [lastid + 1].
Se l'ID isn `t incrementale, questo potrebbe funzionare:
$qry_result = mysql_query($qry) or die(mysql_error());
while ($row = mysql_fetch_array($qry_result)) {
$result = yourfunction($row['whatever');
if ($result != false)
break;
}
Inoltre v'è una funzione php next () che avanza un puntatore al successivo elemento dell'array. Nella funzione è possibile implementare un costruttore di array, quindi il ciclo tra gli elementi con questo. Dipende da ciò che la vostra funzione realmente fa o scopo script è. Potrebbe portare a un certo carico se ci sono un sacco di risultati.
- Non si dovrebbe controllare di database in questo modo, come detto sopra. Database ha una piccola differenza dal file di testo.
- Non si dovrebbe avere un campo nel database che ha un sacco di valori separati da valore1: valore2 | valore1: valore2 | valore1: valore2. Deve essere campi separati. Database ha una piccola differenza dal file di testo semplice ed è meglio imparare.
Si potrebbe provare qualcosa di simile:
SELECT *
FROM table
WHERE field NOT LIKE '%$sessionvar:%';
Credo che questo sia quello che cercate?