mysql: Abfrage zeigt falsches Ergebnis
Fillip
- datenbank
Hi,
$sql = "select a.ArtikelID, l.LieferantenFirmenname , a.ArtikelArtikelnummer, a.ArtikelArtikelbezeichnung, a.ArtikelEinheit, a.ArtikelBemerkung, a.ArtikelKategorie, a.ArtikelStatus, a.ArtikelEK, a.ArtikelVK from Artikel a, lieferanten l
where a.LieferantenID = l.LieferantenID AND
a.ArtikelArtikelnummer LIKE \"%$suchbegriff%\" OR
a.ArtikelArtikelbezeichnung LIKE \"%$suchbegriff%\" OR
l.LieferantenFirmenname LIKE \"%$suchbegriff%\" OR
a.ArtikelEinheit LIKE \"%$suchbegriff%\" OR
a.ArtikelBemerkung LIKE \"%$suchbegriff%\" OR
a.ArtikelKategorie LIKE \"%$suchbegriff%\" OR
a.ArtikelStatus LIKE \"%$suchbegriff%\"
order by '$sortiert_nach' LIMIT $limit1, $limit";
Ist an der Abfrage etwas falsch? Denn sie zeigt das Suchergebnis viel zu oft und auch noch falsch an.
Grüße, Fillip
Ist an der Abfrage etwas falsch? Denn sie zeigt das Suchergebnis viel zu oft und auch noch falsch an.
Ich erhalte das Ergebnis genau sooft, wie ich Lieferanteneinträge habe.
Um in der Sprache der Mathematik zu sprechen:
Ich bräuchte eine Klammer, die ich setzen kann, also
select ... blabla WHERE blabla AND
(bla OR bla OR bla OR bla)
ORDER BY blabla
Geht sowas?
Grüße, Filip
select ... blabla WHERE blabla AND
(bla OR bla OR bla OR bla)
ORDER BY blabla
Ja, sowas geht.
Allerdings ist das, was du hier postest, kein SQL-Statement sondern PHP-Code.
Und da wir nicht wissen, wie dein erzeugtes Statement aussieht, wäre jede Aussage pure Spekulation.
select ... blabla WHERE blabla AND
(bla OR bla OR bla OR bla)
ORDER BY blabla
>
> Ja, sowas geht.
Wäre in meinen Fall aber nicht wegweisend gewesen ;-)
Hi,
Ist an der Abfrage etwas falsch?
das ist keine SQL-Abfrage, sondern, wie Du schon durch das "code lang=php" spezifiziert hast, PHP-Code. Für SQL-Probleme ist PHP-Code uninteressant. Zeige uns das SQL-Statement.
Denn sie zeigt das Suchergebnis viel zu oft und auch noch falsch an.
Wie lauten die Tabellenstrukturen und -inhalte, welches Ergebnis erwartest Du, welches erhältst Du statt dessen?
Cheatah
Schon geschafft:
"SELECT
a.ArtikelID,
l.LieferantenFirmenname,
a.ArtikelArtikelnummer,
a.ArtikelArtikelbezeichnung,
a.ArtikelEinheit,
a.ArtikelBemerkung,
a.ArtikelKategorie,
a.ArtikelStatus,
a.ArtikelEK,
a.ArtikelVK
FROM
Artikel a
INNER JOIN
lieferanten l
ON
a.LieferantenID = l.LieferantenID
WHERE
a.ArtikelArtikelnummer LIKE \"%$suchbegriff%\" OR
a.ArtikelArtikelbezeichnung LIKE \"%$suchbegriff%\" OR
l.LieferantenFirmenname LIKE \"%$suchbegriff%\" OR
a.ArtikelEinheit LIKE \"%$suchbegriff%\" OR
a.ArtikelBemerkung LIKE \"%$suchbegriff%\" OR
a.ArtikelKategorie LIKE \"%$suchbegriff%\" OR
a.ArtikelStatus LIKE \"%$suchbegriff%\"
order by '$sortiert_nach' LIMIT $limit1, $limit";
Hi Filip!
Schon geschafft:
Jetzt bleibt nur noch zu klären, ob du weißt, warum es "geschafft" ist.
MfG H☼psel
Moin Moin!
Schon geschafft:
a.ArtikelArtikelnummer LIKE "%$suchbegriff%" OR
a.ArtikelArtikelbezeichnung LIKE "%$suchbegriff%" OR
l.LieferantenFirmenname LIKE "%$suchbegriff%" OR
a.ArtikelEinheit LIKE "%$suchbegriff%" OR
a.ArtikelBemerkung LIKE "%$suchbegriff%" OR
a.ArtikelKategorie LIKE "%$suchbegriff%" OR
a.ArtikelStatus LIKE "%$suchbegriff%"
order by '$sortiert_nach' LIMIT $limit1, $limit";
Ich sehe hier drei potenzielle Angriffswege für SQL-Injection.
Alexander