Frage von ToBiiYiiAs, 29

Frage zu Query und PHP zum einfügen von Daten?

            <?php
                $name = $_SESSION['usr_log'];
                echo "<center><p class='text'>" . $name . "</p></center>"
            ?>
            <form action="logout.php">
                <p style="text-align: center;"><input type="submit" value="Sign Out" class="wisteria-flat-button"/></p>
            </form><br>
             <?php
             require('assets/server/auth/db.php');
             if (isset($_POST['status_update'])){
             $status = $_POST['status_update'];
             $query = "INSERT into `users` (Status) VALUES ($status) WHERE username='$name'";
             $result = mysql_query($query);
             if($result){
                 echo "<div id='login_base'><center><p class='text'>Status geupdated!</p></center></div>"
             }
             } else {

             ?>
            <form action="" method="POST">
                <p class="text">Bitte überschreite keinesfalls die Grenze von 150 Zeichen!</p>
                <center><input type="text" name="status_update" class="input"/></center>
                <p style="text-align: center;"><input type="submit" value="Change Status" class="wisteria-flat-button"/></p>
            </form>
        </div>
        <?php
             }
        ?>
    </body>

Das ist der Code. Wichtig anzusehen ist $query. Ich möchte gerne die Variable status in das Feld namens 'Status' einfügen. Allerdings in die Reihe die meinem Benutzer gehört. Da $name die Session ist, die auch gleichzeitig den Namen des Benutzers trägt will ich, dass der Status in die Reihe eingefügt dem der Benutzer gehört... Bla bla. Ich bekomme einen 500 Fehler.

Antwort
von GoimgarDE, 19

Insert fügt Zeilen ein. Gibt es diese Zeile (also eine mit dem selben Primäschlüssel) bereits kann nicht eingefügt werden weil das Uniq Constraint des Primary Keys verletzt werden würde. Insofern macht ein insert keinen Sinn. Was du suchst ist Update.
Wenn du nicht weißt ob es für den user schon eine Zeile gibt und je nach dem ob es diese gibt, diese Updaten oder eine neue einfügen willst suchst du "Merge Into".

Antwort
von Sawascwoolf, 29

O.o

1. veraltete Query Funktion mysql_query

2. Direkte Verwendung der $_POST Variable in einem Query

Bitte Bitte hol dir ein Buch, oder lies ein gutes Tutorial über PHP im Bezug auf Nutzereingaben in Verbindung mit SQL.

Ein Fehler besteht darin, dass die Variable $status einen String enthält und in deinem SQL-Query die beiden einfachen Anführungszeichen fehlen.

Antwort
von maximilianus7, 14

... und immer:

mysql_query($query) or die(mysql_error());

dann siehst du es selbst

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten