• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

MySQL Update

Freuler

Neues Mitglied
Guten Abend Allerseits :)

Hab wiedereinmal ein für mich unlösbares Problem. Wäre sehr froh, könnte mir wiedereinmal jemand helfen :)

Dies ist mein Code um ein Feld in meiner Tabelle umzuschreiben. Funktioniert jedoch nicht. Sieht hier jemand den Fehler? :)
Code:
 <?php       $db = mysqli_connect(DB_HOST, DB_BENUTZER, DB_PASSWORT, DB_NAME);
           $sql = "SELECT * FROM nachrichten WHERE mess_id = '$_GET[mess_id]'";
          $daten = mysqli_query($db, $sql);
$zeile = mysqli_fetch_array($daten);
$gate = "UPDATE nachrichten SET gelesen = '1' WHERE mess_id = '$_GET[mess_id]'";


                  echo $zeile[nachricht];


            ?>
 
Werbung:
Nutze die Fehlerdarstellung:

- PHP: mysqli->error - Manual

Feldindizes gehören in Anführungszeichen, wenn keine Konstanten gemeint sind: $zeile[nachricht] → $zeile['nachricht']

Nutze error_reporting. Zu Beginn des Scripts: error_reporting(-1);

Schreibe sowas…

Code:
$sql = "SELECT * FROM nachrichten WHERE mess_id = '$_GET[mess_id]'";

…lieber so:

Code:
$sql = "SELECT * FROM nachrichten WHERE mess_id = '" . $_GET['mess_id'] . "'";

Nutze Escaping, um nicht anfällig für SQL-Injections zu sein.

- PHP: mysqli::real_escape_string - Manual

Du schickst die UPDATE-Query zudem im vorliegenden Abschnitt nicht ab.
 
Code:
 <?php       $db = mysqli_connect(DB_HOST, DB_BENUTZER, DB_PASSWORT, DB_NAME);
           $sql = "SELECT * FROM nachrichten WHERE mess_id = '" . $_GET['mess_id'] . "'";
          $daten = mysqli_query($db, $sql, $gate);
$zeile = mysqli_fetch_array($daten);

if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}
$gate = "UPDATE nachrichten SET gelesen = '1' WHERE mess_id = '" . $_GET['mess_id'] . "'";


                  echo $zeile['nachricht'];


            ?>

Funktioniert dennoch nicht hab nun die Gate Variabel in den mysqli-connect geschrieben. Habe aber alles bereits ausprobiert..
 
Werbung:
Äh… Also das mit der $gate-Variable ergibt keinen Sinn, sorry.

PHP:
<?php

error_reporting(-1);

$db = mysqli_connect(DB_HOST, DB_BENUTZER, DB_PASSWORT, DB_NAME);

if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$sql = "SELECT * FROM nachrichten WHERE mess_id = '" . $_GET['mess_id'] . "'";

$daten = mysqli_query($db, $sql);

if ($daten === false) {
    echo mysqli_error($db);
    exit;
}

$zeile = mysqli_fetch_array($daten);

echo '<p>Inhalt von $zeile: </p>';
var_dump($zeile);


$gate = "UPDATE nachrichten SET gelesen = '1' WHERE mess_id = '" . $_GET['mess_id'] . "'";

$result = mysqli_query($db, $gate);

if ($result === false) {
    echo mysqli_error($db);
    exit;
}

So irgendwie. Ungetestet.
 
Zuletzt bearbeitet:
Ich hab den Text angepasst und einige Sachen umgeschrieben auf Gut Glück. :)

Nun funktioniert es aber tadellos :) Vielen Herzlich Dank
 
Auch wenn das Problem gelöst ist, es ist mir nämlich aufgefallen:

Du hast scheinbar vergessen, den Query auch wieder an das DBMS zu schicken (msqli_query()). Nur dadurch, dass du in einer PHP-Variablen SQL schreibst, wird der Code nicht ausgeführt. Er muss noch an die Datenbank geschickt werden.
 
Werbung:
Zurück
Oben