Comment vérifier si une ligne existe dans MySQL à l'aide de PHP
Je suis en train de lire dans un fichier XML et de le comparer à des champs d'une base de données existante.
Si l'ID dans la base de données n'existe pas dans le fichier XML, puis l'ensemble de la ligne correspondant à l'Id n'est plus valide et sera supprimé.
Pour ce faire, j'ai lu sur chaque ligne de données XML à partir de début à la fin dans une instruction while.
Comme première étape, je suis en train de faire un simple de comparer, et de l'écho si il trouve un Id dans la base de données qui n'existe pas dans le fichier XML.
Je sais qu'il y a certains Identifiants dans la base de données qui n'existent pas dans le fichier XML, mais le code suivant ne s'affiche pas.
J'ai trois questions, tout d'abord comment afficher l'Id qui est tiré de la base de données, et d'autre part pourquoi n'est-ce pas le code pour trouver tous les identifiants qui ne sont pas dans le fichier XML?
La dernière question est vais-je à propos de cette complètement le mauvais sens et est-il une meilleure façon de le faire!
$sql_result = mysql_query("SELECT id FROM `list` WHERE id = $id") or die(mysql_error());
if($sql_result)
{
//echo $id . " Id exists " . $sql_result["id"] . "\n";
}
else
{
echo "Id no longer exists" . $id . "\n";
}
OriginalL'auteur kitenski | 2011-06-14
Vous devez vous connecter pour publier un commentaire.
C'est la bonne façon de le vérifier:
mysql_query
est obsolète maintenant. php.net/manual/en/function.mysql-query.php. Utilisationmysqli_query
à la place.OriginalL'auteur Shef
Votre code n'est pas de trouver ce que vous attendez, car même si l'id ne peut pas être trouvé,
$sql_result
détient toujours uneTRUE
la valeur parce que la requête a été un succès. Au lieu de cela, vérifiez simyqsl_num_rows() > 0
doit être une fracturation troll +1 de moi, c'est la réponse
Ceci est une réponse correcte, mais l'esprit de la une de @Gerep ainsi, il pourrait être avantageux d'obtenir tous les id et faire une seule requête à l'aide DE( id, id, id ) si il y a beaucoup d'entrées.
OriginalL'auteur Michael Berkowski
Vous devriez vérifier le nombre de lignes retournées à l'aide de mysql_num_rows(). Sinon, vous êtes tout simplement la vérification pour voir si la requête exécutée sans erreur.
à
Même avec le mien...
Doit être un troll.
C'est la réponse.
OriginalL'auteur John Cartwright
Vous pouvez utiliser not IN() sur votre sélectionnez avec les Id qui existent sur vous XML comme:
Avec cela, vous aurez une liste des Id qui ne sont pas dans la liste.
Votre Id doivent être séparés par une virgule comme:
OriginalL'auteur Gerep
Question 1: comment afficher l'Id qui est tiré de la base de données?
Question 2: pourquoi n'est-ce pas le code pour trouver tous les identifiants qui ne sont pas dans le fichier XML?
Je pense que dans ton code le si() retournera toujours vrai indépendamment de si l'Id existe dans la base de données ou non. Et, deuxièmement, comme vous l'avez deviné à partir de mon code ci-dessus, il vous manque pour récupérer les données à partir de SQL resultset
Question 3: je suis aller sur ce complètement le mauvais sens et est-il une meilleure manière de le faire?
Que vous faites de la bonne façon, en parcourant le XML et de vérifier chaque entrée dans la base de données pour l'existence. Une meilleure façon pourrait être d'abord de récupérer tous les codes du XML et de les utiliser ensuite dans l'unique requête SQL:
Veuillez noter que cette requête peut courir lentement si il existe un très grand nombre d'Identifiants dans le fichier XML, dire quelques centaines.
OriginalL'auteur Abhay
Ou
OriginalL'auteur dynamic