PHP wird nur bis bind_param ausgeführt

R3str4k

Grünschnabel
Hallo Zusammen.
ich bräuchte eure Hilfe da ich vergeblich versucht habe das Problem zu beheben.

Ich möchte im folgenden Code mit dem prepared stmt einen Wert in meiner Datenbank abändern und die an der Stelle wo die sessionid gleich der aktuellen Session id ist.

Nun passiert folgendes das der Code stoppt bei bind_param. Die variablen sind gefüllt das habe ich schon davor ausgeben lassen. Wenn mir hier jemand weiterhelfen könnte wäre ich euch unendlich Dankbar.

In 4db ist übrigens meine Datenbank und diese wurde auch erfolgreich verbunden.

Viele Grüße
Tim


PS: Hier der Code:

$sql = "INSERT INTO os_gast (g_step1) VALUES(?) WHERE g_sessionid = ?;";
$stmt = $db->prepare($sql);
$stmt->bind_Param('is', (int)$_GET['wert'],$_SESSION['gastid']);
$stmt->execute();
$stmt->close();
 

Zvoni

Erfahrenes Mitglied
Es ist nicht zufälligerweise ein fehlendes Leerzeichen zwischen "VALUES" und der öffnenden Klammer?
VALUES (?) anstatt VALUES(?)

EDIT: Habs gerade gesehen: Seit wann macht man mit einem INSERT ein "abändern" (und dann noch mit einem WHERE)?
$sql = "UPDATE os_gast SET g_step1=? WHERE g_sessionid = ?;";
 

R3str4k

Grünschnabel
Hi vielen Dank für den Tipp, habe es gerade ausgebessert allerdings war das nicht der Grund, geht leider immer noch nicht...
 

R3str4k

Grünschnabel
Ich kann noch erwähnen das der wert von 'g_step1' in der DB jedes mal NULL ist also der Befehl INSERT macht keine Probleme
 

R3str4k

Grünschnabel
Vermutlich

$sql = "UPDATE os_gast SET g_step1=? WHERE g_sessionid = ?;";
Hi, leider auch nicht das Problem...

PHP:
    echo 1;
    $sql = "UPDATE os_gast SET g_step1=? WHERE g_sessionid = ?;";
    echo 2;
    $db = new mysqli("","", "",$db_name);
    echo 3;
    $stmt = $db->prepare($sql);
    echo 4;
    $stmt->bind_Param('is', (int)$_GET['wert'],$_SESSION['gastid']);
    echo 5;
    $stmt->execute();
    echo 6;
    $stmt->close();

Hier kann man sehen, dass jedes mal davor abbricht (get-wert = 1, und die gastid ist eine Session-ID)

1639745278151.png
Die 1234 ist die Ausgabe auf dem Bildschirm
 

m.scatello

Erfahrenes Mitglied
Drehe mal das Error-Reporting hoch, in dem du am Anfang des Scriptes diese Zeilen einbaust:

ini_set('display_errors', true);
error_reporting(E_ALL);
 

Zvoni

Erfahrenes Mitglied
Yupp. Fehlerbehandlung hoch.
Oder mal versuchen die zwei Parameter vor dem Bind-Param-Aufruf in zwei Variablen packen, und diese dann checken, obs stimmt