Sascha: PHP Anfänger

Hallo folgendes
bei einem Speichervorgan soll dieser Befehl ausgeführt werden.

$position = @mysql_query("SELECT PosID FROM completed ORDER BY PosID ASC LIMIT 0 , 1");

Mein Speichervorgang für die DB sieht so aus:
if ($action_d == "save") {
 $content_D = $_POST['projekt'];
 mysql_query("insert into $table_D (ProID, content_D) VALUES ('$project_id', '$content_D')") or die(mysql_error());
}

Jetzt soll bei meinem Speichervorgang der oben genannte Befehl mit ausgeführt werden wie mach ich das. Ist vill. ne blöde Frage aber ich fange gerade erst an in PHP bitte darum um etwas Verständniss.

Vielen Dank
Sascha

  1. Hallo erstmal,

    erstmal würde cih sql grundsätrlich großschreiben werte in '' und alles andere in ``. Zur FRage:
    Warum machtst du in der if-Konstrukt nicht noch einen wie obern genannten mysql_query??

    (Oder hab ich da jetzt was falsch verstanden?)

    Gruß
    Herbert

  2. Hello Sascha,

    $position = @mysql_query("SELECT PosID FROM completed ORDER BY PosID ASC LIMIT 0 , 1");

    Mein Speichervorgang für die DB sieht so aus:
    if ($action_d == "save") {
    $content_D = $_POST['projekt'];
    mysql_query("insert into $table_D (ProID, content_D) VALUES ('$project_id', '$content_D')") or die(mysql_error());
    }

    Es wäre sinnvoll, wenn Du mal beschreibst, was Du erreichen willst und dann auch sagst, ob das SELECT _vor_ oder _nach_ dem INSERT stattfinden soll und was mit dem Abfrageergebnis geschehen soll.

    Außerdem solltest Du automatische Fehlermeldungen nur ausschalten, wenn Du selber eine Fehlerbehandlung durchführst. Die sollte man nach _jedem_ Query mittels Abfrage von mysql_errno() oder mysql_error() vornehmen.

    Außerdem ist die Übergabe einer unbehandelten Variable aus externe Quelle ($_POST['projekt']) an ein sql-Query eine gefährliche Sicherheitslücke. Siehe 'SQL Injection' oder 'SQL Injektion'.

    Vermutlich müsstest Du auch erst auf get_magic_quotes_gpc()
    http://de.php.net/manual/de/function.get-magic-quotes-gpc.php
    prüfen und die ggf. automatisch hinzugefügten Maskierungen wieder entfernen und dann mittels mysql_[real_]escape_string() die Variable 'entschärfen. Das nur so nebenbei.

    Zwei einzelne SQL-Statements, die zum selben Vorgang gehören, muss man zudem in MySQL meistens mit einem 'Lock Tables' binden, damit die Datenintegrität gewahrt bleibt.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau