• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

datenbank durchsuchen

Mad Dog

Mitglied
hey

habe da eine kleine frage!
in einem php script speicher in einen wert in einer variable und nun will ich eine datenbank (mysql) durchsuchen und schauen ob es diesem wert gibt.

meine idee war es mittels SELECT die spalte, wo der wert vorkommen koennte auszulesen und dann mittels php mit meiner variable zu vergleichen ob der wert vorkommt oder nicht.

ist das okay oder dauert die abfrage zu lange?
oder gibt es eine einfachere moeglichkeit?

danke im vorraus
 
Ja, so würde ich es auch machen. Also nicht jede Zeile einzelnt, sondern erstmal schauen ob es vorhanden und und dann evt. die Zeile abzufragen. Beispiel:

PHP:
$sqlbefehl = "select * from $tab where username='$gesucht' ";
$ergebnis  = mysql_query($sqlbefehl, $serverid);

if (mysql_num_rows($ergebnis) == 0) {
    ## hier wenn $gesucht nicht gefunden wurde
    } else {
    ## und hier wenn $gesucht vorhanden ist
    }
Ich kenn einige, die solch eine Abfrage in einer Schleife über jede Zeile schleifen lassen. Das ist unnötige Serverlasst ;)

Mfg
 
nochmal schnell eine kurze frage.
die abfrage und das durchsuchen klappt:

$sql = 'SELECT
KeyWord1
FROM
link
WHERE
KeyWord1 = ?';
jetzt habe ich aber noch 2 weiter KeyWord spalten KeyWord2 und KeyWord3.
kann ich da eine if abfrage reinbauen und die nummer durch eine variable ersetzen oder muss ich das anderst loesen?
 
Du kannst OR hinter dem WHERE verwenden.

Zb:
Code:
SELECT * FROM link WHERE KeyWord1 = ? OR KeyWord2 = ?
Ich hoffe, das ist das was du gesucht hast.
 
geht auch ein AND?
weil es ist auch sehr gut moeglich, dass das was ich suche in 2 spalten also zum beispiel KeyWord1 und KeyWord2 vorkommt.

EDIT: sorry falsch formuliert. ich will 2 spalten in einer abfrage durchsuchen

$sql = 'SELECT
KeyWord1 AND KeyWord2
FROM
link
WHERE
KeyWord1 = ?';

im code zeile 2 ist dieses AND dort erlaubt?
 
Zuletzt bearbeitet:
Wenn beide Suchbegriffe vorkommen müssen:
Code:
$sql = 'SELECT 
                        KeyWord1,  KeyWord2
                        FROM
                        link
                        WHERE
                        KeyWord1 = ? AND KeyWord2 = ?';
Wenn eines von beiden vorkommen muss:
Code:
$sql = 'SELECT 
                         KeyWord1,  KeyWord2
                         FROM
                         link
                         WHERE
                         KeyWord1 = ? OR KeyWord2 = ?';
Gruß thuemmy
 
wenn du nur ansatzweise das schlüsselwort kennst, wird dir das argument LIKE noch eine hilfe sein.

Nils aka XraYSoLo
 
hmmm irgendwie verwirrend. da es nicht zwingend sein muss das das keyword in beiden spalten vorkommen muss, koennte aber sein oder es kommt gar nicht vor :-D

$sql = 'SELECT
KeyWord1, KeyWord2
FROM
link
WHERE
KeyWord1 = ?';

wenn ich es so mache durchsucht sql die spalten keyword1 und keyword2 nacht keyword1.wuerde es so funktionieren wenn es in beiden vorkommt?
 
Nein, dann müsstest Du beide Spalten mit Oder verknüpfen.

Code:
$sql = 'SELECT KeyWord1,  KeyWord2 FROM link WHERE KeyWord1 LIKE 'suchwort' OR Keyword2 LIKE 'suchwort';

Oder

Code:
$sql = 'SELECT KeyWord1,  KeyWord2 FROM link WHERE 'suchwort' IN (KeyWord1, Keyword2);

Gibt viele Möglichkeiten. Das Handbuch von MySQL bietet da viele Lösungen.
 
threadi bei deinem 2ten vorschlag steht 'suchwort'.
kann ich dafuer ein ? uebergeben und mittels $mysqli_stmt->bind_param('s', $part); das gesucht wort uebergeben?
 
Das "suchwort" war nur als Beispiel gedacht. Du könntest dort natürlich dein eigenes Suchwort, was auch in einer php-Variable stehen kann, eintragen.
 
ah okay
naja ich benutzte ein fragezeichen und ueber bind param bind ich dann die variable ein.
danke schoen jetzt klappt alles perfekt.
 
Zurück
Oben