Tom: Variablen, Anführungszeichen und ich kotz gleich!

Beitrag lesen

Hello,

Folgende Abfrage klappt in Script1 und in Script2 klappt dieselbe Abfrage nicht, weil $ID, obwohl per Link mitgegeben, nicht umgesetzt wird, obwohl per $_REQUEST eingelesen...

$ID = $_REQUEST['ID'];

Die Benutzung von $_REQUEST ist meistens die falsche Wahl. Entscheide Dich lieber für $_GET (Link) oder $_POST (Formular), wenn nicht ein wirklich guter Grund für $_REQUEST spricht.

Außerdem braucht Du die Variable nicht von einer in eine andere umzukopieren. Du kannst direkt $_GET['ID'] benutzen.

Damit Dir aber niemand etwas böses ins Query einschleppt, solltest Du $_GET['ID'] noch vorbehandeln. Wenn es ein String ist, mit mysql_real_escape_string()
http://www.php.net/manual/en/function.mysql-real-escape-string.php
oder http://www.php.net/manual/en/mysqli.real-escape-string.php
und wenn es ein Integer ist, was bei IDs ja normal wäre,  z.B. mit intval()
http://www.php.net/manual/en/function.intval.php

Flasche Eingaben würden dann einfach 0 ergeben, sodass der Index 0 in der Tabelle auch für einen ungültigen Wert stehen sollte, bzw. eben gar nicht aufgenommen wird.

$result=mysql_query("select * from A where ID=$ID AND Del!=1");

Wenn $_GET['ID'] ein String ist, muss dieser auch entsprechend quotiert werden im Query.
"select *" solltest Du Dir nicht angewöhnen, sondern besser gleich "select $fieldlist" benutzen, wobei $fieldlist dann die Liste der abzufragenden Felder enthält.

Su solltest den Querystring vorher einer Variablen zuweisen

$sql = "select $fieldlist from A where ID=$ID AND Del!=1");

Dann kannst Du es Dir auch vorher zum Debuggen ausgeben lassen, oder zumindest, wenn etwas schiefgegangen ist.

Ob etwas schief gegangen ist, solltest Du auch abfragen:
http://www.php.net/manual/en/mysqli.query.php

$res = mysqli_query($sql, $conn);

if (!$res)
    {
        echo mysqli_error($conn);   # http://www.php.net/manual/en/mysqli.error.php
    }
    else
    {
        # weiterarbeiten
        # ...
    }

MySQL sollte Dir auf diese Weise schon mitteilen, warum das Query nicht funktioniert hat.

Liebe Grüße aus Syburg bei Dortmund

Tom vom Berg

--
Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de