PHP SQL UPDATE über bind_param() machen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
ausprobieren
befehl
code
datenbank
einsetzen
eintragen
email
hauptsache
klausel
letzter parameter
machen
obigen beitrag
parameter
probier
problem
set
statement
unterscheiden
update
vergessen
-
Hallo. Ich habe ein Problem mit meinem Code. Ich habe bereits nach einer Lösung gegooglt, dort fand ich aber nur das selbe was ich bereits in meinem Code stehen habe.
So mein Problem ist folgendes: Ich möchte zwei Werte in meiner Datenbank per UPDATE updaten. Diese Werte will ich dann von bind_param() und execute() in die Datenbank eintragen lassen. Allerdings gibt es hier ein paar Probleme den es scheint so, als würde die Syntax nicht stimmen und sich der UPDATE Befehl krass von dem INSERT Befehl unterscheiden.
Hier ist der zum Fehler führende Quellcodeausschnitt:
$sql_login_done = "UPDATE user SET last_login=?, online_status=? WHERE email = ".$username; $statement_login_done = $db->prepare($sql_login_done); $statement_login_done->bind_param('si', time(), 1); $statement_login_done->execute();
Was mach ich falsch. Ich würde ungerne solch eine Methode verwenden:
$sql_login_last = "UPDATE user SET last_login=time() WHERE email='".$username."'"; mysql_query($sql_login_last); @mysql_close($sql_login_last);
Schon mal vielen Dank für eure Bemühungen.
cpk2011 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
also wenn du prepared-statements objektorientiert in mysqli einsetzen willst würde ich sowohl überprüfen ob du time() nicht lieber als integer bindest und auch den wert der where-klausel parametrisieren -
und was macht die "1" bei dir als letzter parameter von bind_param() ?:
<?php $sql_login_done = "UPDATE user SET last_login=?, online_status=? WHERE email=?"; $statement_login_done = $db->prepare($sql_login_done); $statement_login_done->bind_param('iis', time(), 1, $username); $statement_login_done->execute(); ?>
ich gehe mal davon aus das die verbindungsherstellung klappt und du auch daran denkst die verbindung am ende wieder zu schließen,,,
Beitrag zuletzt geändert: 14.2.2013 21:35:04 von hcms -
Ich werd das gleich mal ausprobieren. Die "1" signalisiert, das der User online ist. Es gibt zwei mögliche Werte "1" und "0". Dabei ist "0" Offline und "1" Online.
cpk2011
-- Edit --
Das scheint auch nicht zu funktionieren: dann kommt bei mir die Fehlermeldung:
Fatal error: Cannot pass parameter 3 by reference in F:\xampp\htdocs\test.php on line 12
Hier also die Codezeile 5.
Beitrag zuletzt geändert: 14.2.2013 21:30:58 von computerkurs2011 -
ne leider nicht, hatte dies auch schon selbst bei mir im code berichtigt.
-
hmm, probier mal so:
<?php $sql_login_done = "UPDATE user SET last_login=?, online_status=? WHERE email=?"; $statement_login_done = $db->prepare($sql_login_done); $cTypen = "iss"; $iZeit = time(); $iStatus = 1; $cUsername = $username; $statement_login_done->bind_param($cTypen, $iZeit, $iStatus, $cUsername); $statement_login_done->execute(); ?>
-
Vielen Dank, jetzt gehts. Es ist wohl nur möglich Werte aus einer Variable eintragen zu lassen. Schade aber hauptsache ist ja das es geht. Ach ja. Der Type, Also 'iss' muss nicht in einer extra Variable sein um zu funkunieren.
cpk2011 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage