MyBB.de Forum

Normale Version: MySQL Abfrage mit Array-Fkt.?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich hätte eine Frage zu einer MySQL-Abfrage:
Code:
$query = $db->query("
SELECT * FROM `".TABLE_PREFIX."threads`
WHERE `replies` < 300
AND `fid`!= X1
AND `fid`!= X2
AND `fid`!= X3
AND `fid`!= X4
AND `fid`!= X5
AND `tid`!= Y1
ORDER BY `lastpost` DESC LIMIT 40");

Die Liste der Ausnahmen, die ich in der Abfrage eingebaut habe kann u.U. noch wachsen und ich frage mich, ob man die Werte vorweg auch in ein Array packen kann, um die Array-Werte dann anschließend in die MySQL-Abfrage zu integrieren.
Ich schaffe das leider nicht. Wohl auch wegen meiner fehlenden Kenntnisse was MySQL angeht. Wink

Würde mich freuen, wenn mir jemand auf die Sprünge helfen kann. Smile
Hallo Jockl,

Kurz und knapp: Ja es ist möglich.
Siehe folgendes Beispiel:

PHP-Code:
/* Array mit zu versteckenden  Foren-IDs*/
$hide_fids = array(1345821);

$sql "";
$fids ="";

// erstelle einen String "1, 3, 4, 5, 8, 21"
foreach ($hide_fids as $fid) {
  if(
$fids$fids .= ",";
  
$fids .= $fid;


// setze SQL-Statement zusammen
$sql "SELECT * FROM `".TABLE_PREFIX."threads` WHERE `replies` < 300 AND fid NOT IN ($fids) ORDER BY `lastpost` DESC LIMIT 40";

$query $db->query($sql); 


Mfg Garlant
Mögliche Lösung:
PHP-Code:
$exceptions = array(
    
"X1" => "fid",
    
"X2" => "fid",
    
"X3" => "fid",
    
"X4" => "fid",
    
"X5" => "fid",
    
"Y1" => "tid"
);

foreach(
$exceptions as $exception => $value) {
    
$conditions .= " AND ".$value."!='".$exception."'";
}

$query $db->query("SELECT * FROM `".TABLE_PREFIX."threads` WHERE `replies` < 300 ".$conditions." ORDER BY `lastpost` DESC LIMIT 40"); 
foreach....*patsch* Smile

...eine Funktion, mit der ich immer noch auf Kriegsfuß stehe.

Super, vielen Dank Euch beiden!!!!!

@Garlant: bei dem $sql-Statement fehlt ein ";" und bei foreach muss noch ne Klammer rum.

Beide Vorschläge klappen einwandfrei !!!! Big Grin