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
