PHP MySQL ligne suivante - comment déplacer le pointeur jusqu'à ce que la fonction vérifie vrai?

StackOverflow https://stackoverflow.com/questions/2542248

  •  23-09-2019
  •  | 
  •  

Question

J'ai un script PHP qui prend une valeur à partir d'une ligne dans ma base de données MySQL, il passe par une fonction, et si elle détermine c'est le rendement réel d'une valeur, et si elle est fausse, il faut aller à la prochaine valeur la base de données et vérifier que l'un jusqu'à ce que finalement on retourne vrai. Je pense que je dois utiliser mysql_fetch_assoc, mais je ne suis pas vraiment sûr de quelle façon de l'utiliser ... Je voudrais pouvoir poster mon code pour être plus précis, mais il y a beaucoup de code et la plupart d'entre elle n'a aucune incidence sur cette question ...

Pas de solution correcte

Autres conseils

Est-ce quelque chose « fonction », vous pouvez le faire dans la base de données à la place? Il est vraiment inefficace pour traiter toutes les lignes de la table pour vérifier un certain type de condition. C'est exactement ce que les bases de données sont bons, à savoir le traitement des requêtes de manière efficace et obtenir des réponses à vous rapidement.

Alors je vous recommande de regarder comment tout faire du côté de la base de données afin que votre code PHP est juste aller chercher le résultat final (à savoir les lignes filtrées par la fonction). Peut-être que si vous fournissez plus de détails sur ce que votre « fonction » est fait, une réponse plus précise peut être fournie.

Vous pouvez utiliser mysql_fetch_array, et juste sauter sur les valeurs récupérées en utilisant $ row [id] et non $ row [ 'nom']. Supposons que votre fonction retourne vrai, vous devriez juste utiliser $ row [lastId + 1].

Si l'ID n `incrémental, cela pourrait fonctionner:

$qry_result = mysql_query($qry) or die(mysql_error());
while ($row = mysql_fetch_array($qry_result)) {
    $result = yourfunction($row['whatever');
    if ($result != false)
         break;
}

Il y a également une fonction de php suivante () qui fait avancer un pointeur vers l'élément suivant de la matrice. Dans votre fonction, vous pouvez mettre en œuvre un constructeur de tableau, puis le cycle entre les éléments avec cela. Cela dépend de ce que votre fonction ne fait ou objet de script est. Elle pourrait conduire à une certaine charge s'il y a beaucoup de résultats.

  1. Vous ne devriez pas vérifier la base de données ainsi, comme mentionné ci-dessus. Base de données a une petite différence dans le fichier texte brut.
  2. Vous ne devriez pas avoir un champ dans votre base de données qui a un tas de valeurs séparées par value1: value2 | value1: value2 | value1: value2. Il doit être des champs séparés. Base de données a une petite différence dans le fichier texte brut et mieux vous apprendre.

Vous pouvez essayer quelque chose comme ceci:

SELECT *
FROM table
WHERE field NOT LIKE '%$sessionvar:%';

Je pense que ce que vous êtes après?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top