PHP - inserer des mails d'un fichier texte à
tarik
-
tarik -
tarik -
Bonjour,a tous
J’ai un script pour insérer des données provenant d'un fichier texte dans ma base de données.
Mais il me ramène un bug que je ne sais comment résoudre.
Voici mon code :
<? php
include('connect.php');
if (!$fp = fopen("mail.txt","r"))//mail.txt est un fichier text qui contient l'ensemble des enregistrement
{
echo "Echec de l'ouverture du fichier";
exit;
}
else
{
while(!feof($fp))
{
// On récupère une ligne
$Ligne = fgets($fp,255);
// On affiche la ligne
echo $Ligne;
$sql="insert into lettre (email) values ('$Ligne')";
$res=mysql_query($sql) or die( "Echec de selection" );
$tot=mysql_num_rows($res) or die( "Echec de selection2" );
}
echo " $tot mails ont été insérés dans la base";
fclose($fp); // On ferme le fichier
}
?>
Puis le message kil me ramène :
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampplite\htdocs\testons_recuperation_mail\inser.php on line 27
Echec de selection2
Si quelqu'un peut m'aider il me sauvera la vie !!
Merci infiniment d'avance
J’ai un script pour insérer des données provenant d'un fichier texte dans ma base de données.
Mais il me ramène un bug que je ne sais comment résoudre.
Voici mon code :
<? php
include('connect.php');
if (!$fp = fopen("mail.txt","r"))//mail.txt est un fichier text qui contient l'ensemble des enregistrement
{
echo "Echec de l'ouverture du fichier";
exit;
}
else
{
while(!feof($fp))
{
// On récupère une ligne
$Ligne = fgets($fp,255);
// On affiche la ligne
echo $Ligne;
$sql="insert into lettre (email) values ('$Ligne')";
$res=mysql_query($sql) or die( "Echec de selection" );
$tot=mysql_num_rows($res) or die( "Echec de selection2" );
}
echo " $tot mails ont été insérés dans la base";
fclose($fp); // On ferme le fichier
}
?>
Puis le message kil me ramène :
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampplite\htdocs\testons_recuperation_mail\inser.php on line 27
Echec de selection2
Si quelqu'un peut m'aider il me sauvera la vie !!
Merci infiniment d'avance
A voir également:
- PHP - inserer des mails d'un fichier texte à
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
4 réponses
Bonsoir:
mysql_num_rows ( resource result )
Récupère le nombre de lignes d'un jeu de résultat. Cette commande n'est disponible que pour les requêtes SELECT. Pour récupérer le nombre de lignes affectées par une requête INSERT, UPDATE ou DELETE, utilisez la fonction mysql_affected_rows
mysql_num_rows ( resource result )
Récupère le nombre de lignes d'un jeu de résultat. Cette commande n'est disponible que pour les requêtes SELECT. Pour récupérer le nombre de lignes affectées par une requête INSERT, UPDATE ou DELETE, utilisez la fonction mysql_affected_rows
C'est normal, tu as une erreur de principe, a chaque boucle d'écriture du mail dans la base tu charges la variable $tot, ce qui écrase a chaque fois avec mysql_affected_rows() qui vaut 1
il faut ajouter à chaque boucle comme ça:
il faut ajouter à chaque boucle comme ça:
<?php include('connect.php'); if (!$fp = fopen("mail.txt","r"))//mail.txt est un fichier text qui contient l'ensemble des enregistrement { echo "Echec de l'ouverture du fichier"; exit; } else { //init variable $tot $tot=0; while(!feof($fp)) { // On récupère une ligne $Ligne = fgets($fp,255); // On affiche la ligne echo $Ligne; $sql="insert into lettre (email) values ('$Ligne')"; $res=mysql_query($sql) or die( "Echec de selection" ); $tot = $tot + mysql_affected_row(); //le paramettre est le link, si rien c'est celui par defaut, donc tu n'en mets pas } echo " $tot mails ont été insérés dans la base"; fclose($fp); // On ferme le fichier } ?>
mais j'ai toujours un message d'erreur:
Warning: mysql_affected_rows(): supplied argument is not a valid MySQL-Link resource in C:\xampplite\htdocs\testons_recuperation_mail\inser.php on line 27
Echec de selection2
la ressource retournée par la requête n'est pas explotable
$sql="insert into lettre (email) values ('$Ligne')";
$res=mysql_query($sql) or die( "Echec de selection" );
essayes pour voir: