Mika: Problem bei MySQL-Befehl

Hallo Zusammen,

ich rätsel gerade an dem Fehler folgender MySQL-Abfrage rum:

$query = "SELECT *, (SELECT status FROM tx\_phaenderungen\_status WHERE tx_phaenderungen_entries.processingStatus = tx_phaenderungen_status.id) AS status FROM tx\_phaenderungen\_entries WHERE deleted=0 AND revision LIKE '%$_POST[SearchFlag]%' OR status LIKE '%$_POST[SearchFlag]%'";

Es geht darum das in dem Feld "processingStatus" der Tabelle tx_phaenderungen_entries nur eine Ziffer steht (z.B.)

In der zweiten Tabelle tx_phaenderungen_status steht die Bedeutung der Ziffern (z.B. id: 0 ; status: in Arbeit).

Die Zusammenführung der beiden Tabellen funktioniert.

Ich habe mir eine kleine Suchfunktion gebastelt, in der oben aufgeführte MySQL Abfrage ausgeführt wird.

Aber es schlägt aufgrund folgendem fehl:

status LIKE '%$_POST[SearchFlag]%'";

Weiß jemand wie es richtig lauten muss?

  1. yo,

    bitte immer nur die reine query angeben, nicht irgend welchen programmcode, wenn es nur um eine sql-abfrage geht.

    • SELECT * mit unterabfrage wird meiner meinung nach nicht gehen
    • du hast eventuell klammern um die beiden LIKE bedingungen vergessen, AND wird stärker als OR binden.

    Ilja

  2. Du hast brav das oberste Gebot von Foren eingehalten:
    Geht es um einen Fehler, erwähne in deinem Beitrag niemals die Fehlermeldung!

    Wie dem auch sei.
    probiers mal mit
     status LIKE '" . %$_POST['SearchFlag'] . "%'";

    So wie ich PHP kenne, häts dir eigentlich ein paar Warnings

    • Fehlermeldungen an den Kopf werfen müssen.

    gruß
    ma

    1. Hi,

      Wie dem auch sei.
      probiers mal mit
      status LIKE '" . %$_POST['SearchFlag'] . "%'";

      So wie ich PHP kenne, häts dir eigentlich ein paar Warnings

      • Fehlermeldungen an den Kopf werfen müssen.

      Noe, in dem Fall wohl nicht. PHP "merkt" ja nicht mal, dass da der Inhalt einer Variablen eingebunden werden soll - es betrachtet das ganze als reinen Text, also landet das auch so in der ausgefuehrten Query.

      Mit simpelsten Debug-Strategien, wie bspw. einer Kontrollausgabe des generierten Statements, haette das dem Frager allerdings auch gut selber auffallen koennen. Und btw., ueber SQL Injections und was man dagegen tut, sollte er sich auch informieren.

      MfG ChrisB