Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Verständnis Problem mit php mysql

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Verständnis Problem mit php mysql

    Hallo, habe die Nacht durchgemacht und es bereitet mir Kopfschmerzen, bekomme das Problem nicht alleine gelöst.

    Habe vor eine Funktion zu schreiben in der ich Arrays mitschicke und er sie dann in die Datenbank einträgt.
    Das funktioniert aber nur zur hälfte,... hier mal der Code der Funktioniert

    PHP-Code:
    function insertArrayToDB($db){
        
    $a=zufallsstring();
        
    $b=zufallsstring();
        
    $c=zufallsstring();
        
    $array = array ( "nick""email""psw" );
        
    $array2 = array ( $a$b$c );
            try
            {
                
    $db->query("INSERT INTO user (".implode(',',$array).") VALUES ('$a','$b','$c') ");
            }
            catch(
    Exception $e)
            {
                echo 
    $e->getMessage();
            }

    Der Teile jedoch....
    PHP-Code:
    VALUES ('$a','$b','$c'"); 
    lässt sich nicht mit einem Array füllen, egal welche Schreibweise ich versucht habe, entweder Vertauscht die Variablen oder gibt mir ein Error raus wegen der Syntax.
    Wenn ich an der Stelle die Hochkommata weg lasse funktioniert es auch nicht daher habe ich das Gefühl das es mit der implode() Funktion an der Stelle so wie ich sie mit dem ersten Array gemacht habe nicht funktioniert.

    Es wäre Super Wenn mir jemand Denkanstöße geben könnte oder vielleicht sogar des Rätsels Lösung

    Da die Funktion noch im Aufbau ist erstelle ich alles innerhalb der Funktion,...Wenn es denn mal funktionieren sollte werden die Daten natürlich aninsertArrayToDB() übergeben.


    Hier noch die db Klasse die ich verwende falls es hilft
    PHP-Code:
    class MyDB
    {
      private 
    $connection;
     
      public function 
    connect($host$database$username$password)
      {
        @
    $this->connection = new mysqli($host$username$password$database);
        if (
    mysqli_connect_errno()) throw new Exception(__METHOD__.'::'.mysqli_connect_error());
      }
      public function 
    close()
      {
        if (!
    $this->connection) return false;
        
    $this->connection->close();
      }
      public function 
    query($sql$return='affected'$result_mode=MYSQLI_USE_RESULT)
      {
        if (!
    $this->connection) throw new Exception('Connection missing');
        
    $data = array();
        if (
    $result $this->connection->query($sql$result_mode)) 
        {
          if (
    $return=='affected'){ $data $this->connection->affected_rows; }
          elseif (
    $return=='num'){ $data $result->num_rows; }
          elseif (
    $return=='bool'){ $data = ($result->num_rows 0); }
          elseif (
    $return=='id'){ $data $this->connection->insert_id; }
          elseif (
    $return=='assoc'){ while ($row $result->fetch_assoc()) $data[] = $row; }
          elseif (
    $return=='numeric'){ while ($row $result->fetch_assoc()) $row $result->fetch_array(MYSQLI_NUM); }
          elseif (
    $return=='fields'){ while ($row $result->fetch_fields()) $data[] = $row; }
          if (
    is_object($result)) $result->close();
        }
        else
        {
          throw new 
    Exception(__METHOD__.'::'.$this->connection->error.'::'.$sql);
        };
        return 
    $data;
      }
      public function 
    startTransaction($isolation_level="SERIALIZABLE")
      {
        if (!
    $this->connection) return false;
        
    $isolation_level strtoupper($isolation_level);
        
    $ok $this->query("SET TRANSACTION ISOLATION LEVEL {$isolation_level};""bool");
        
    $ok = ($ok && $this->query("SET AUTOCOMMIT=0;""bool"));
        return (
    $ok && $this->query("START TRANSACTION;""bool"));
      }
      public function 
    commit()
      {
        if (!
    $this->connection) return false;
        if (!
    $this->query("COMMIT;""bool")) return false;
        
    $this->query("SET AUTOCOMMIT=1;""bool");
        return 
    true;
      }
      public function 
    rollback()
      {
        if (!
    $this->connection) return false;
        if (!
    $this->query("ROLLBACK;""bool")) return false;
        
    $this->query("SET AUTOCOMMIT=1;");
        return 
    true;
      }  
     


  • #2
    Einfach mal den Query-String ausgeben und GGF MySQL-Fehlermeldung ansehen.
    [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

    Kommentar


    • #3
      Ungetestet:
      PHP-Code:
      function insertArrayToDB($db)
      {
          
      $keys = ("`nick`""`email`""`psw`" );
          
      $values = array();
          
          
      $values[] = "'" zufallsstring() . "'";
          
      $values[] = "'" zufallsstring() . "'";
          
      $values[] = "'" zufallsstring() . "'";
          
          try
          {
              
      $db->query("INSERT INTO `user` (" implode(','$keys) . ") VALUES (" implode(','$values) . ")");
          }
          catch(
      Exception $e)
          {
             echo 
      $e->getMessage();
          }

      Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

      Kommentar


      • #4
        Wahnsinn uha Danke dir vielmals, das funktioniert super und auch danke für die schnelle hilfe

        PHP-Code:
         $keys = ("`nick`""`email`""`psw`" ); 
        da musste jedoch eine array Angabe hinter
        PHP-Code:
         $keys = array("`nick`""`email`""`psw`" ); 
        Werde noch versuchen zu verstehen warum mein Lösungsweg falsch war , Danke noch mal

        Kommentar

        Lädt...
        X