Ankündigung

Einklappen
Keine Ankündigung bisher.

mysqli UPDATE mit Variablen welche manchmal leer sind

Einklappen

Neue Werbung 2019

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

  • mysqli UPDATE mit Variablen welche manchmal leer sind

    Hallo,

    folgendes Szenario:

    Ich habe eine Tabelle mit dem Eintrag

    nr name ip port

    1 test 123 15

    Nun möchte ich durch die den Wert Name ändern ohne das dabei die anderen Werte verschwinden.

    Mein Code sieht so aus:

    Möglickeit 1:

    Ich gebe z.B. die nr und den namen an

    nr = 1 name = asdasd


    Möglichkeit 2:

    Ich gebe z.B. die nr, name, ip, port an

    nr = 1 name = asdasd ip = 15 port = 465

    Wie kann ich nun die Daten einfügen ohne das ip und Port verschwinden?



    PHP-Code:
    <form class='form form-inline' method='POST'>

    <
    label>Nr</label>
    <
    input class='form-control' placeholder='Nr' type='text' name='nr' required></input>

    <
    label>Name</label>
    <
    input class='form-control' placeholder='Name' type='text' name='name'></input>

    <
    label>IP</label>
    <
    input class='form-control' placeholder='IP' type='text' name='ip'></input>

    <
    label>Port</label>
    <
    input class='form-control' placeholder='Port' type='text' name='port'></input>

    <
    button class='btn btn-success' type='submit'>Speichern</button>
    </
    form>

    $servername "localhost";
    $username "...";
    $password "...";
    $dbname "...";

    // Create connection
    $conn = new mysqli("localhost"$username$password$dbname);
    // Check connection




    $sql "UPDATE `LiveServerStatus` SET name='$name', ip='$ip', port='$port' WHERE nr='$nr'";



    if (
    mysqli_query($conn$sql)) {
    echo 
    $sql;
    } else {
    echo 
    "Error updating record: " mysqli_error($conn);
    }




    Ich hoffe ihr versteht mich

    Danke schonmal für eure Hilfe

  • #2
    Bitte nutze die PHP oder Code Tags, wenn du hier Code einfügst, dazu gibt es sogar Schalter im erweiterten Editor.

    Du musst prüfen welche Variablen gesetzt sind und dir das statement zusammenbauen.

    zum Beispiel so

    PHP-Code:
    if (isset( $name )){
        
    $set[] = "`name`='" $conn->real_escape_string($name) . "'";
    }
    if (isset( 
    $ip )){
        
    $set[] = "`ip`='" $conn->real_escape_string($ip) . "'";
    }
    if (isset( 
    $port )){
        
    $set[] = "`port`='" $conn->real_escape_string($port) . "'";
    }

    $nr $conn->real_escape_string($nr);  

    $set implode(', '$set);

    $sql "UPDATE `LiveServerStatus` SET " $set " WHERE `nr`= '$nr'";
    var_dump($sql); 

    Kommentar


    • #3
      Ja sorry hab ich vergessen, nächstes Mal mache ich es besser

      Okay also
      1. Prüfe ich ob der Wert gesetzt ist
      2. der Array $set speichert nur die ausgefüllten felder und diese werden dann mithilfe von implode "ausgepackt" richtig?
      3. Die Nr hole ich mir direkt da diese ausgefüllt sein muss
      4. Ich baue den Array (welche "aufgelöst wurde") in das SQL Statment ein

      Habe ich das so richtig interpretiert?

      Könntest du das Beispiel richtig auskommentieren falls ich es falsch verstanden habe?
      Ich verstehe das Beispiel zwar aber kann damit noch nicht so viel anfangen...

      Kommentar


      • #4

        Hau doch einfach überall ein var_dump rein und lass es dir an verschiedenen Stellen anzeigen.
        Das ist eigentlich so simpel, das ich gar nicht weiss was das kommentiert werden muss.
        Set[] ist ein Array, beginnend bei Index 0, beim nächsten mal ist set dann set[1] wenn du so willst.

        Was implode tut oder nicht steht im Handbuch von php.
        Hier hat es die Kommas rein bevor aus dem array ein string wird.

        Kommentar


        • #5
          Danke jetzt funktioniert es. War zu müde als ich dran weiter programmiert habe. Danke

          Kommentar

          Lädt...
          X