Hi,
ich moechte bei einer Selektion ueber die MySQLi-Erweiterung in einer Query ueber die WHERE-Klausel Datensaetze mit bestimmten IDs ausschliessen.
Die IDs habe ich in einem PHP-Array vorliegen.
$excludeIDs = array(1, 2, 5, 4711);
$excludeIDsImploded = implode(', ', $excludeIDs); // liefert mir also '1, 2, 5, 4711'
Jetzt moechte ich das in einer Query in der WHERE-Klausel mit NOT IN nutzen, habe also
$STMT = $mysqli->stmt_init();
$STMT->prepare('SELECT ... FROM ... WHERE id NOT IN(?)');
echo $STMT->error;
$STMT->bind_param('s', $excludeIDsImploded);
echo $STMT->error;
$STMT->execute();
echo $STMT->error;
Bekomme keine Fehlermeldungen, aber beim fetchen der Datensaetze dann auch die jenigen mit den IDs, die eigentlich per WHERE NOT IN() ausgeschlossen werden sollten, zurueckgegeben.
Also ist wohl meine Vorgehensweise, das Textliteral mit dem Inhalt '1, 2, 5, 4711' per bind_param() als Inhalt fuer NOT IN(?) einsetzen zu wollen, nicht korrekt. Da kommt wohl, wenn man mal etwas genauer drueber nachdenkt, effektiv sowas wie NOT IN('1, 2, 5, 4711') bei heraus.
Wie wuerde man sowas korrekt machen?
Oder geht das mit der MySQLi-Erweiterung und Prepared Statements gar nicht?
(MySQL-Version ist 4.1.22, PHP 5.2.5)
MfG ChrisB
„This is the author's opinion, not necessarily that of Starbucks.“