* für SQL auskommentieren

luchs3

Erfahrenes Mitglied
Hi,

Ich habe eine Abfrage, welche Artikel aus der DB holt.
Diese hole ich über POST in ein Array, füge sie mit implode zusammen und überprüfe im Statement mit IN.
Leider haben einige Artikel ein * im Namen, worauf mir die DB Fehlerhafte Zeilen ausgibt.
Wie kann ich das Maskieren?

PHP:
$artikel = $_POST['artikel'];
$artikel = "'".implode("','",$artikel)."'";

$SQL1 = "SELECT ILP_ART ....
... = $vtnr AND ILP_ARTNR IN ($artikel) AND ILK_BDATUM BET...
 
Wenn ich diese Artikel eingebe bekomme ich eine Fehlermeldung.
('TO RF*GA35153M','TO RF-GA18263M','TO RF-GA35183M','TO RF-GS38153M')
Wenn ich den mit * weglasse funktioniert es.

Edit:
Wenn ich andere Artikel davor und danach hinschreibe, überspringt er die, die mit TO RF beginnen.
 
Zuletzt bearbeitet:
Als Fehler bekomme ich: 500 internal Server error.
Das ganze soll eine XML Ausgabe formen, bekomme aber nur die Meldung, dass das XML-File nicht korrekt ist (eh klar).
Dachte, dass der Rest nur vom wesentlichen ablenkt.
Ist übrigens eine ODBC-Abfrage.

Code:
$SQL1 = "SELECT ILP_ARTNR, ILP_NAME, ILK_LADNR, {d YEAR(ILK_BDATUM)} as ILK_JAHR, {d MONTH(ILK_BDATUM)} as ILK_MONAT,
    SUM(ILP_BETRAG) AS VKPREIS, SUM(ILP_MENGE) AS ILK_MENGE FROM idatlifp
    INNER JOIN idatlifk ON ILK_BNUM = ILP_BNUM 
    WHERE ILK_KUNR = $kunde AND ILP_VTNR = $vtnr AND ILP_ARTNR IN ('TO RF*GA35153M','TO RF-GA18263M','TO RF-GA35183M','TO RF-GS35403M') AND ILK_BDATUM BETWEEN {d '$sDate'} AND {d '$eDate'}
    GROUP BY ILP_ARTNR, ILP_NAME, ILP_TEXT1, ILK_LADNR, ILK_BDATUM
    ORDER BY ILK_LADNR, ILP_ARTNR, ILK_BDATUM ASC";
 
da musst Du ins Errorlog Deines Servers schauen, was da schief läuft.
Der IIS wehrt sich etwas, bin eigentlich Apache gewöhnt

Das ist eine Filebasierte COBOL db, auf die ich mittels ODBC- Treiber zugreife.
Ich habe das Statement mit Excel probiert, und das funktioniert ohne Probleme.

-> Ziemlich ratlos
 
ach das Ding wieder...
Ich fürchte, da kann ich dir nicht helfen. Wenn aber die Abfrage an sich mit diesem komischen Treiber funktioniert, dann musst Du Dich wie gesagt beim Server auf die Fehlersuche machen.

LG
 
Zurück