Hallo PHP Profis,
kann mir bitte einer Helfen, ich steh irgendwie an!
Ich bastle gerade ein BadWord Filter, wie folgt:
Habe eine DB mit BadWords, wo ich durch eine Schleife (id) die Badwords mit "preg_match" eine Variable durchsuche. Das klappt ganz gut, jetzt gebe ich sie Testweise mit echo an der Web wieder, jetzt möchte ich aber die gefunden Werte in eine array backen um sie auszuwerten bzw, weiter zu bearbeiten, bring sie aber nicht in die array, warscheinlich wegen der Schleife, oder wie?
Kann mir da einer helfe?
Mein script:
<?php
include('../config.ini');
mysql_connect($host, $user, $pass) or die ("Kein Zugriff auf die Datenbank.");
mysql_select_db($db) or die ("Die Datenbank existiert nicht.");
$id = mysql_query("SELECT * FROM BadWords");
$CountID = mysql_num_rows($id);
$id = 1;
while ($id < $CountID)
{
$result = mysql_query("SELECT * FROM BadWords WHERE id = $id");
while ($spalte = mysql_fetch_array( $result )) {
$BadWord = $spalte['BadWord'];
}
mysql_free_result( $result );
$testtext = "Fickschlitz ist ein Bad word, auch Arsch ist ein schlimmes Wort.";
preg_match("/\b$BadWord\b/", $testtext, $ausgabe);
echo $ausgabe[0]." ";
$id++;
}
?>
Ankündigung
Einklappen
Keine Ankündigung bisher.
[Erledigt] array bilden aus Schleife
Einklappen
Neue Werbung 2019
Einklappen
X
-
[Erledigt] array bilden aus Schleife
-
Generell sind SQL Queries in Schleifen schlecht! Wozu überhaupt erst alles selektieren um die Menge zu erfahren? Die ganze äußere Schleife ist unnötig, da kann man gleich alle Daten auslesen und den Vergleich starten... überhaupt solltest du die Suche in die Datenbank verlagern (Stichwort WHERE).
Desweiteren kann es in den Schlüsseln Lücken geben, einfach von 1 bis Anzahl der Datensätze zu iterieren ist daher eine ganz schlechte Idee.
-
Jo, formulier dein Anliegen beim nächsten mal verständlicher, poste Code in die dafür vorgesehenen Tags und schreib ins richtige Unterforum. Dann fallen die Antworten auch ein bisschen hilfreicher aus.
Einen Kommentar schreiben:
-
Danke für eure...
Habe es durch break, Schleife stoppen wenn Wert gefunden und array übergabe gelöst!
Einen Kommentar schreiben:
-
Zitat von VPh Beitrag anzeigenNe, das ganze ist ja schon in einer anderen Schleife, in der er alle ID's durchgeht und die als Where-Klausel nimmt um nochmal ein Wort rauszunehmen.
Einen Kommentar schreiben:
-
Ne, das ganze ist ja schon in einer anderen Schleife, in der er alle ID's durchgeht und die als Where-Klausel nimmt um nochmal ein Wort rauszunehmen.
Wie tkausl schon sagte, unnötig.
Dazu ist das hier eindeutig das falsche Unterforum.
Standardtext für die Datenbankverbindung:
Die mysql_* Erweiterung ist veraltet und wird in der nächsten PHP-Version entfernt.
Durch einen Wechsel auf mysqli_* oder PDO greifst du auf die modernere API zu und hast die Möglichkeiten Prepared Statements zu benutzen die gegen Injections schützen.
Ich persönlich bevorzuge PDO, schönes Tutorial: http://www.peterkropff.de/site/php/pdo.htm
Einen Kommentar schreiben:
-
Zitat von tkausl Beitrag anzeigenSo 'n Quatsch hab ich auch schon lange nichtmehr gesehn.
Außerdem benutzt du die veraltete MySQL-Extension, steige um auf MySQLi
16.14. Warum soll ich nicht SELECT * schreiben?
http://net.co.at/doc/howto/docs/dclp...ql-select.html
Einen Kommentar schreiben:
-
PHP-Code:while ($spalte = mysql_fetch_array( $result )) {
$BadWord = $spalte['BadWord'];
}
Edit: Ach sorry. Doch nicht. Aber das Gedöns ist so seltsam aufgebaut, dass man da schnell in Schwankungen kommt.
Einen Kommentar schreiben:
-
Weil ich es schon mit mysql_fetch_assoc() versucht habe, es aber nicht klappte, wo query pflicht ist, danke für deine Aussage, statt Hilfe!
Einen Kommentar schreiben:
-
So 'n Quatsch hab ich auch schon lange nichtmehr gesehn. Wozu ließt du die Tabelle nicht einfach ganz normal aus, ohne WHERE und die unnötige Query davor?
Einen Kommentar schreiben:
Einen Kommentar schreiben: