Ein array übergeben, per POST in PHP eingefügt werden, in MySQL

Ich habe ein Formular, das ermöglicht Benutzern die Eingabe von Klassen und Aktivitäten in mehrere Felder, diese Felder sind erklärt wie diese :

    label for ="classact">Classes and Activities</label>
        <input type = "text" name = "classact[0]" value ="" id ="classact[0]">
        <input type = "text" name = "classact[1]" value ="" id ="classact[1]">
        <input type = "text" name = "classact[2]" value ="" id ="classact[2]">

Wenn das Formular übergeben wird, dies ist der code, Griffe in der insert:

    $maininsert = "INSERT INTO `camptest`
        (`name`, `city`, `phone`, `photo`)
        VALUES
        ('$_POST[name]', '$_POST[city]', '$_POST[phone]', '$photoinfo')
        SET @lid = LAST_INSERT_ID()
        ";

    $classactinsert = "INSERT INTO `class_act`
                (`cid`";

    for($i = 0; $i < 3; $i++)
    {
       if(isset($_POST['classact'][$i]))
       {
          $temp = $i+1; 
          $classactinsert = $classactinsert . ",`act$temp`";
       }
    }

   $classactinsert = $classactinsert . ")
                                VALUES
                                ('@lid'";

   for($i = 0; $i < 3; $i++)
   {
      if(isset($_POST['classact'][$i]))
      {
         $classactinsert = $classactinsert . ",'$_POST[classact][$i]";
      }
   }

  $classactinsert = $classactinsert . ")";                                  

  $indata = $maininsert . $classactinsert;

  $result = mysql_query($indata);

Merke ich, das ist eine Menge code, aber nach dem ausfüllen des Formulars und dem Absenden dieser Abfrage, die generiert wird:

    INSERT INTO `camptest` (`name`, `city`, `phone`, `photo`) VALUES ('Multiple Activities', 'Nowhere', '555-555-1111', 'images/51127f6b06d1e.jpg') SET @lid = LAST_INSERT_ID() INSERT INTO `class_act` (`cid`,`act1`,`act2`,`act3`) VALUES ('@lid','Array[0],'Array[1],'Array[2])

Wird die Abfrage nicht einfügen, aber es ist nicht, Sie werfen zurück, alle Fehler, obwohl ich Sie eingeschaltet.

Meine wichtigste Frage ist, was mache ich falsch, dass die Ursache der Werte zu act1, act2 und act3 zu zeigen, wie Array[0], Array[1] und Array[2]?

Meine sekundäre Frage ist, bin ich noch über das der richtige Weg? Ich bin ein wenig neu in php und ich fürchte, ich könnte dies zu tun die harte Weise?

Jede Hilfe würde geschätzt werden, lassen Sie mich wissen, wenn Sie zusätzliche Informationen benötigen.

  • Könnte der code anfällig für sql-injection. Versuchen Sie mysqli - api.
  • Einfach der Wechsel zu mysqli wird nicht verhindern, dass SQL-injection; in der Tat, es könnte die Sicherheitsanfälligkeit noch schlimmer, da mysql_query nicht erlaubt, mehrere Anweisungen in einer SQL-Abfrage (in der Erwägung, dass mysqli kann). Sie wollen wechseln, aber die alte mysql-Kram ist veraltet...aber für die Sicherheit Willen, werden Sie auch lernen wollen, verwenden Sie vorbereitete Anweisungen, die tun einiges, um zu verhindern, dass SQL-injection, wenn richtig eingesetzt.
InformationsquelleAutor SmashCode | 2013-02-06
Schreibe einen Kommentar