PHP + SQL: Update in einer for-schleife

dectus

Grünschnabel
[Gelöst] PHP + SQL: Update in einer for-schleife

Hallo zusammen...

hab jetzt überall mit google/yahoo gesucht.. leider werde ich nicht weiter schlau was hier vorgeht..

also habe ein Array $array, dieses wird in der for-schleife gut ausgegeben (kommentiertes echo $array[$i];), bis hier alles ok.
Alles andere scheint auch zu funktionieren, nur das problem ist das es nur (!!) das letzte array element wirklich ausgeführt wird...

hat da jemand eine ahnung wieso nicht alle mysql_query($sql1) asgeführt werden ?

bedanke mich schon jetzt für eure tipps :)
PHP:
for($i=0;$i<sizeof($array);$i++){
  //echo $array[$i] . " -> ";
  
  $sql1 = "UPDATE jos_users 
          SET mailing_repi = '0', mailing_praktika = '0'
          WHERE email = '$array[$i]'";
  $result = mysql_query($sql1);
  
  //echo "done.<br><br>";
}
 
Zuletzt bearbeitet:
Du kannst es auch mit nur einer Abfrage abwickeln:
PHP:
if( count($array) ) {
	$query = 'UPDATE jos_users SET mailing_repi = "0", mailing_praktika = "0" WHERE email IN ("'.implode('", "', array_map('mysql_real_escape_string', $array)).'")';
	$result = mysql_query($query);
}

//echo "done.<br><br>";
}
 
Du kannst es auch mit nur einer Abfrage abwickeln:
PHP:
if( count($array) ) {
	$query = 'UPDATE jos_users SET mailing_repi = "0", mailing_praktika = "0" WHERE email IN ("'.implode('", "', array_map('mysql_real_escape_string', $array)).'")';
	$result = mysql_query($query);
}

//echo "done.<br><br>";
}

danke für das schnelle antworten :)

leider funktioniert es auch nicht :(
 
Enthält $array denn überhaupt Werte?

jaja, die werden bei meinen code mit "echo $array[$i] . " -> ";" auch richtig ausgegeben (für den test hatte ich 5 Werte, alle 5 Werden ausgegeben)..
darum finde ich komisch das nur der letzter array wert auf mysql ebene ausgeführt wird.
 
aha... hab wohl das problem gefunden (weiss aber nicht wie ich es lösen kann...)..

also die unter $array[0] ... $array[n-1] werden alle emails mit "....@..... " <- mit ein leerzeichen am ende ... un nur das letzte element wird ohne das leerzeichen im array gespeichert...

nur wie kann ich verhindern das diese leerzeichen vorkommen ?
Hier den code den ich gebrauche um die text datei zu öffnen:
PHP:
$file = fopen("email/email.txt", "r");
while (!feof($file)) {
    $buffer = fgets($file, 4096);
    echo $buffer . ".<br>";
    $array[$x] = $buffer;
    $x++;
}
fclose ($file);
 
Das Zeichen am Ende ist vermutlich kein Leerzeichen sondern das oder die Zeilenumbruchzeichen. Du kannst es dir aber auch etwas einfacher machen:
PHP:
$array = preg_split('/\s+/s', file_get_contents('email/email.txt'));
if( count($array) ) { 
	$query = 'UPDATE jos_users SET mailing_repi = "0", mailing_praktika = "0" WHERE email IN ("'.implode('", "', array_map('mysql_real_escape_string', $array)).'")'; 
	$result = mysql_query($query);
}
 
Das Zeichen am Ende ist vermutlich kein Leerzeichen sondern das oder die Zeilenumbruchzeichen. Du kannst es dir aber auch etwas einfacher machen:
PHP:
$array = preg_split('/\s+/s', file_get_contents('email/email.txt'));
if( count($array) ) { 
	$query = 'UPDATE jos_users SET mailing_repi = "0", mailing_praktika = "0" WHERE email IN ("'.implode('", "', array_map('mysql_real_escape_string', $array)).'")'; 
	$result = mysql_query($query);
}


du bist mein Held ;-)

danke Gumbo !! :)
 

Neue Beiträge

Zurück