Update MYSQLi funktioniert nicht

dreggert

Mitglied
Hallo zusammen

Ich brauch mal eure Hilfe. ICh hab folgenden Code:

PHP:
function updateGuest($gast_ID,$vname,$name,$strasse,$plz,$ort,$telefon,$handy,$email,$anrede,$link){
echo $link . "<br>";
echo $query = ("UPDATE Mieter SET Vorname='$vname', Nachname='$name', Strasse='$strasse', PLZ='$plz', Ort='$ort', Email='$email', Tel='$telefon', Handy='$handy', Anrede='$anrede' WHERE PK_ID='$gast_ID'");

echo $res = mysqli_query($link,$query);
    if (!$res)  
        {echo("<br> die Anfrage scheitert - Update");}
}

Ich bekomme immer die Meldung, dass id Anfrage/Update gescheitert ist.
Gebe ich die Query direkt im PMA als SQL Befehl ein, funktioniert der Aufruf und die Daten werden aktualisiert.

Ich habe mehrere Abfragen, bei denen dies auch Reibungslos funktioniert. Deswegen steh ich da gerade auf dem Schlauch.

Funktionierende Abfragen:

PHP:
function getGuestID($vname,$name,$ort,$link){
$query = ("SELECT PK_ID FROM Mieter WHERE Vorname = '$vname' and Nachname = '$name' and Ort = '$ort'");
$res = mysqli_query($link,$query);
    if (!$res){  
        echo("die Anfrage scheitert - Benutzer_ID");
    }   
    $d = mysqli_fetch_array($res);
    $gast_id = $d["PK_ID"];
    if ($gast_id == "")
        {return -1;}
    else
        {return $gast_id;}

}

und

PHP:
function insertGuest($vname,$name,$strasse,$plz,$ort,$email,$tel,$handy,$anrede,$link){
$query = ("INSERT INTO Mieter (Vorname, Nachname, Strasse, PLZ, Ort, Email, Tel, Handy, Anrede) VALUES ('$vname','$name','$strasse','$plz','$ort','$email','$telefon','$handy','$anrede')");
$res = mysqli_query($link,$query);
    if (!$res)  
        {echo("die Anfrage scheitert - Neuen Mieter anlegen");}
  //Rückgabe der vergebenen ID  
    return mysqli_insert_id($link); 
}
 
Zuletzt bearbeitet von einem Moderator:
Printr bzw Echo geben folgendes aus:
UPDATE Mieter SET Vorname='Melanie', Nachname='Behling-Eggert', Strasse='Spycherstr. 1', PLZ='8596', Ort='Scherzingen', Email='mellbe@gmx.de', Tel='weq', Handy='', Anrede='Familie' WHERE PK_ID='145'
Füge ich das im SQL in der DB aus, funktioniert es.
 
Es gibt keinen Error, das ist ja das, was mich verwundert. Alle anderen DB Abfragen, Sei es insert oder select funtktioieren reibungslos. nur die Update nicht. Und was noch komischer ist: Sie hatte auch schonmal funktioniert, als ich sie am Anfang gebaut habe.
 
Das klingt als ob er den Update ausführt, aber keinen passenden Datensatz findet

Gibt es die PK_ID 145 überhaubt?
Und ist es wirklich ein String und keine Zahl?
 
Die Zahl PK_ID gibt es wirklich. Ich wähle den Datensatz vorher aus, aktualisiere ihn und schreibe ihn zurück in die Datenbank.

Wenn ich im Code die Hochkomma rausnehme bekomme ich das selbe Ergebnis

UPDATE Mieter SET Vorname='Melanie', Nachname='Behling-Eggert', Strasse='Spycherstr. 1', PLZ='8596', Ort='Scherzingen', Email='mellbe@gmx.de', Tel='weq', Handy='', Anrede='Familie' WHERE PK_ID=145
die Anfrage scheitert - Update
Führe ich die Query direkt im PHPMyAdmin SQL mässig aus, bekomme ich folgendes Ergebnis.
upload_2017-2-2_15-53-52.png
 
Hm. Und er gibt keinen Fehler aus. Kommt den deine Meldung "die Anfrage scheitert - Neuen Mieter anlegen" oder nicht mal das?
 
Ich habe dies mal eben nachgebaut, bei mir funktioniert es so:
PHP:
$db_host = "localhost";
$db_username = "root";
$db_pass = "";
$db_name = "test";
$db= mysqli_connect("$db_host","$db_username","$db_pass") or die ("could not connect to mysql");
mysqli_select_db($db,$db_name) or die ("no database");

function updateGuest($gast_ID,$vname,$name,$strasse,$plz,$ort,$telefon,$handy,$email,$anrede,$link){
//echo $link . "<br>";
$query = "UPDATE test SET Vorname='$vname', Nachname='$name', Strasse='$strasse', PLZ='$plz', Ort='$ort', Email='$email', Tel='$telefon', Handy='$handy', Anrede='$anrede' WHERE PK_ID='$gast_ID'";
mysqli_error($link);
$res = mysqli_query($link,$query);
    if (!$res){
        echo("<br> die Anfrage scheitert - Update");
    }else{
        echo("<br> die Anfrage war erfolgreich");
    }
}
updateGuest(1,"h","b","s","p","o","t","h","e","h",$db);

Ich habe nur die Echo entfernt, weil die einen Error geworfen haben.
Im $query habe ich noch die () entfernt.
 

Neue Beiträge

Zurück