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

Problem mit MySQL-User-Suche

Status
Für weitere Antworten geschlossen.

pabatribick

Neues Mitglied
Hallo,

ich habe ein eigenes User-Suchscript gecodet nur gibt jetzt MySQL eine Fehler aus der so aussieht:
Code:
[B]
Warning[/B]:  Division by zero 
[B]Warning[/B]:  Division by zero
[B]Warning[/B]:  Division by zero
[B]Warning[/B]:  Division by zero

und das 4 mal obwohl eigentlich das mit %$_POST['suchanfrage']% funktioniert. hier mal der code:

PHP:
<table border=\"1\" height=\"20\" cellpadding=\"0\" cellspacing=\"0\">
<tr><td bgcolor="#C0C0C0" width="30" align="center">ID</td><td bgcolor="#C0C0C0" width="55" align="center">Nick</td><td bgcolor="#C0C0C0" width="55" align="center">Status</td><td bgcolor="#C0C0C0" width="20" align="center">PN</td></tr>
$query = mysql_query("SELECT * FROM user_suche WHERE nick LIKE '%$_POST['suche']%' OR motto LIKE '%$_POST['suche']%'") or die(mysql_error());
while ($row = mysql_fetch_array($query)) {
<tr><td bgcolor="C0C0C0" width="30" align="center">".$row["id"]."</td><td bgcolor="#C0C0C0" width="55" align="center">".$row["nick"]."</td><td bgcolor="#C0C0C0" width="55" align="center">N/A</td><td bgcolor="#C0C0C0" width="20" align="center">N/A</td></tr></table>
}

Ich hoffe ihr könnt mir weiterhelfen..:lol:
PS.: Daten werden über POST gesendet!
 
Werbung:
Nur leider hat der Code nichts mit der Fehlermeldung zu tun, denn da wird nichts geteilt. Division by zero heißt ja, dass du irgendwas durch 0 teilst.
 
Werbung:
Falls du durch eine Variable teilst, von der du nur animmst, dass sie einen Wert hat, sie aber aus irgendeinem Grund keinen hat, ist das ja auch eine "Division by zero". Einfach überall gucken wo irgendwas geteilt wird und vorher einmal die Variable ausgeben :)
 
Du hast bei der Tabelle vergessen, das erste " zu maskieren.

Rück mal ein bisschen mehr code raus, die Stelle, an der die Division stattfindet.
 
Werbung:
Ja hier sind die stellen:

Code:
<table border=\"1\" height=\"20\" cellpadding=\"0\" cellspacing=\"0\">
<tr><td bgcolor="#C0C0C0" width="30" align="center">ID</td><td bgcolor="#C0C0C0" width="55" align="center">Nick</td><td bgcolor="#C0C0C0" width="55" align="center">Status</td><td bgcolor="#C0C0C0" width="20" align="center">PN</td></tr>
$query = mysql_query("SELECT * FROM cms_user WHERE nick LIKE '%$_POST['suche']%' OR motto LIKE '%$_POST['suche']%'") or die(mysql_error());
while ($row = mysql_fetch_array($query)) {
<tr><td bgcolor="C0C0C0" width="30" align="center">".$row["id"]."</td><td bgcolor="#C0C0C0" width="55" align="center">".$row["nick"]."</td><td bgcolor="#C0C0C0" width="55" align="center">N/A</td><td bgcolor="#C0C0C0" width="20" align="center">N/A</td></tr></table>
}
 
Mehr SQL hast du nicht verwendet?

Was machen die %-Zeichen um deine Variablen? Lass die mal weg, die werden da nicht gebraucht und die einfachen Anführungszeichen dürften sich auch gegenseitig stören, die musst du wohl maskieren.
 
diese %-zeichen braucht man um eine suche in der db vorzunehmen.
Ohne den funktioniert5 es nicht. siehe: SQL LIKE

und das mit den anführungszeichen, wieso was soll da stören?
 
Werbung:
Stimmt, für LIKE braucht man die.

Innerhalb von doppelten Anführungszeichen markieren einfache Anführungszeichen doch einen String.

Der würde bei dir dann so aussehen
Code:
'%$_POST['
suche wäre teil der Select-Anweisung und danach käme ein weiterer String
Code:
']%'
Wenn das jetzt auch nicht stimmt, gehe ich ins Bett und kuriere meine Erkältung aus.
 
Ok, ich versuchs anders.

Angenommen du hast folgenden Code

PHP:
<?php echo "<p style='color: red;'>test</p>"; ?>
Die doppelten Anführungszeichen umschließen den String, der per echo ausgegeben werden soll, die einfachen Anführungszeichen umschließen die Styleangabe.

Ebenso hätte ich schreiben können

PHP:
<?php echo "<p style=\"color: red;\">test</p>"; ?>
Die inneren doppelten Anführungszeichen müssen dann aber mit dem \ maskiert werden, weil der String sonst so aussehen würde

PHP:
<?php echo "<p style="color: red;">test</p>"; ?>
Und so sieht es bei dir in der SQL-Anweisung aus, du hast doppelte Anführungszeichen, die die SQL-Anweisung umschließen, dann kommt vor dem ersten % ein ', welches einen String einleitet, der durch das nächstfolgende ' wieder geschlossen wird, also nach der [. Dann folgt das Wort suche, welches ausserhalb der einfachen Anführungszeichen steht, gefolgt von einem weiteren String, bestehend aus den Zeichen ]%, umgeben von einfachen Anführungszeichen.

PHP:
<?php "SELECT * FROM cms_user WHERE nick LIKE '%$_POST['suche']%' OR motto LIKE '%$_POST['suche']%'" ?>
Der Parser kann nicht erkennen, welche einfachen Anführungszeichen zusammen gehören sollen, er sieht nur das erste und wartet dann auf das nächste, womit für ihn der String wieder geschlossen wird. In deinem Fall also, wie schon erwähnt
Code:
'%$_POST['
. Das ist für ihn der String und
Code:
']%'
ist der nächste.

Und so wäre es richtig
PHP:
mysql_query("SELECT * FROM cms_user WHERE nick LIKE '%" . $_POST['suche'] . "%' OR motto LIKE '%" . $_POST['suche'] . "%'");
 
Werbung:
jetzt kommen noch mehr fehler -.- :(

Code:
[B]Parse error[/B]: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben