Insertion multiple

Mammouth du PHP | 725 Messages

12 mars 2012, 10:29

Bonjour,

j'ai une liste des emails sous la forme: [email protected], [email protected], ... et je voudrais les inserer dans ma table:
<?php

   		$mailsList = preg_replace('/\s/', '', $Email);
   		$mailExp = explode(',', $mailsList);
   		
   		$insertQuery = 'INSERT INTO mailinglist';
	
			$insertValues = '';
			
			foreach($mailExp as $k=>$v)
			{
				$insertValues .= '('.$v.'), ';
			}
				
			$insertQuery .= $insertValues;
						
			$insertValuesList = substr($insertQuery, 0,-2);
						
			$insertMailList = $insertValuesList.';';
			$insertMailList = '\"'.$insertMailList.'\"';
			
			echo $insertMailList.'<br />';
		 	$InsertMailsReq = $connexion->query($insertMailList);
		   		

?>
j'ai essaye plusieurs methode, ca me retourne differente erreurs, comme:
to use near '\"INSERT INTO mailinglist
merci pour votre aide

ViPHP
xTG
ViPHP | 7331 Messages

12 mars 2012, 10:46

Bah oui...
C'est quoi ça ?
$insertMailList = '\"'.$insertMailList.'\"';
Une requête SQL n'est pas entouré de double quote. ;)

Et vu que tu utilises PDO::query() il faut protéger tes données injectées.
Donc utilises PDO::quote() sur $v.

Mammouth du PHP | 725 Messages

12 mars 2012, 13:45

je recois cette erreur:
INSERT INTO mailinglist('[email protected]';<br /><br />
<b>Warning</b>: PDO::query() [<a href='pdo.query'>pdo.query</a>]: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''[email protected]'' at line 1 in email.php on line <b>312</b><br />
foreach($mailExp as $k=>$v)
			{
			
				$insertValues .= '('.$connexion->quote($v,PDO::PARAM_STR).'),';
			}

ViPHP
xTG
ViPHP | 7331 Messages

12 mars 2012, 14:18

On voit tout de suite qu'il manque la parenthèse fermante non ?
Et le problème se situe ici :
$insertValuesList = substr($insertQuery, 0,-2);

Mammouth du PHP | 725 Messages

13 mars 2012, 04:16

j'ai change par -1, je voudrais eliminer le "," et mettre ";" a sa place
$insertValuesList = substr($insertQuery, 0,-1);

Mammouth du PHP | 725 Messages

14 mars 2012, 14:44

y a t il une idee?

ViPHP
xTG
ViPHP | 7331 Messages

14 mars 2012, 17:09

Affiches la variable résultante de la construction de la requête. Cela nous donnera déjà un peu plus d'idée sur sa tête. ;)

Mammouth du PHP | 725 Messages

19 mars 2012, 08:10

je vais echapper cette methode pour quelques jours, et je re sur elle, merci xTG

Mammouth du PHP | 2278 Messages

19 mars 2012, 09:12

Affiches la variable résultante de la construction de la requête. Cela nous donnera déjà un peu plus d'idée sur sa tête. ;)
a raison à la puissance infini positif.
Comme je cains que xTG prêche dans le désert, je m'autorise à expliciter;
foreach($mailExp as $k=>$v)
 {
                       
              $insertValues .= '('.$connexion->quote($v,PDO::PARAM_STR).'),';
 }
 //ajouter (pourquoi ==><==? systématique de ma part pour voir s'il ne traîne rien avant ou après.)
print"<br/>==>$insertValues<==";
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD