Datensätze auslesen die nicht mit Array identisch sind

GalaxyWarrior

Erfahrenes Mitglied
Hi, ich habe eine Tabelle mit der Spalte Username und eine mit den Spalten Username , Opfer , Link.
Die Usernamen aus der ersten Tabelle speichere ich in einem Array:

PHP:
	$mix = 1;
	$check = "SELECT * FROM member";
	$checkres = mysql_query($check) or die("MySQL query fehlerhaft".mysql_error());
	while($checkdat = mysql_fetch_array($checkres)){
		$members[$mix++] = $checkdat[Username];
	}
	$mi = mysql_num_rows($checkres);

Nun möchte ich aus der 2. Tabelle nur die Zeilen auslesen, wo der username nicht identisch mit einem aus dem Array ist.

Aber, wie mache ich das. Also wie kann ich es machen, das da alle namen aus dem Array geprüft werden? Und wir überprüfe ich in MySQL ob etwas NICHT den un den Inhalt hat? mit != gehts nicht.

Gruß GalaxyWarrior
 
Versuch mal SELECT ... WHERE user NOT IN ('name1', 'name2', 'name3', ...). Das Zeugs in der Klammer musst du natürlich dynamisch aus deinem Array erstellen.
 
@Pendergast
Nur wie erstelle ich den Inhalt der Klammern dynamisch aus meinem Array? Normal lese ich das Array doch mit
PHP:
<?
for($i = 1;$i <= $mix; $i++){
    $members[$i];
}

aus? Oder geht das noch anders?

Das mit Join werde ich mal probieren.
 
Das müsste funktionieren:

$not_in_string = "'".implode("', '", $array)."'";


Wobei der Teil der Query dann so ausschaut:

WHERE user NOT IN ($not_in_string)


Das mit JOIN kann ich mir grad nicht vorstellen, weil ich mir seine Tabellen auch nicht vorstellen kann. :-)
 
So mach ich das immer, wenn ich so eine Situation habe:
PHP:
<?php
   $expr = "";

   for( $i = 0; $i < count( $members ); $i++ )
   {
      $expr .= $members[$i].",";
   }

   $expr = substr( $expr, 0, strlen( $expr ) - 1 );

   $sql = "SELECT ... WHERE user NOT IN (".$expr.")";
?>

edit: aber ich denke auch immer zu kompliziert ist mir aufgefallen ^^

mfG,
MAN
 
@Pendergast

Es kommt

Code:
MySQL query fehlerhaftYou have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ' `Opfer` NOT IN ('Stardust', '2Fast4u', 'Wikinger', 'Cor-AI', '

der SQL String ist:

PHP:
	$select1 = "SELECT * FROM kb WHERE `Time`> '$show', `Opfer` NOT IN ($not_in_string) ORDER BY 'Opfer' ASC";

Gruß GalaxyWarrior
 
Du kannst auch keine Expressions in der WHERE-Klausel mit Kommata trennen... Entweder mit AND oder mit OR (hier mal mit AND):

PHP:
$select1 = "SELECT * FROM kb WHERE `Time`> '$show' AND `Opfer` NOT IN ($not_in_string) ORDER BY 'Opfer' ASC";
mfG;
MAN
 
Zurück