MyBB.de Forum
MySQL Abfrage mit Array-Fkt.? - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: Sonstiges (https://www.mybb.de/forum/forum-1.html)
+--- Forum: Programmierung (https://www.mybb.de/forum/forum-32.html)
+--- Thema: MySQL Abfrage mit Array-Fkt.? (/thread-9724.html)



MySQL Abfrage mit Array-Fkt.? - Jockl - 16.06.2008

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


RE: MySQL Abfrage mit Array-Fkt.? - Garlant - 16.06.2008

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


RE: MySQL Abfrage mit Array-Fkt.? - Michael - 16.06.2008

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"); 



RE: MySQL Abfrage mit Array-Fkt.? - Jockl - 16.06.2008

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