Vallo
Vallo

Reputation: 23

How to fix bind_param "Cannot pass paramete"

The url I use: ../accessogiornaliero.php?idplayer=45ccf2a79ec84c

accessogiornaliero.php:

$query = $mysqli->prepare('UPDATE player SET lastLogin = ?,loginstreak = ? WHERE idplayer = ?');
            $query->bind_param("sis", $qdata, $loginStreak, $_GET["idplayer"]);
            $qdata = $now->format('Y-m-d H:i:s');
            $query->execute();

Error:

[05-May-2019 21:19:05 Europe/Rome] PHP Fatal error:  Uncaught Error: Cannot pass parameter 3 by reference in .../accessogiornaliero.php:62
Stack trace:
#0 {main}
  thrown in .../accessogiornaliero.php on line 62

Where am I wrong?

Upvotes: 0

Views: 58

Answers (2)

Raymond Nijland
Raymond Nijland

Reputation: 11602

I think you are you are trying to pass a DateTime object as reference?

[05-May-2019 21:19:05 Europe/Rome] on the $qdata variable

I think you can/should rewrite

$query = $mysqli->prepare('UPDATE player SET lastLogin = ?,loginstreak = ? WHERE idplayer = ?');
            $query->bind_param("sis", $qdata, $loginStreak, $_GET["idplayer"]);
            $qdata = $now->format('Y-m-d H:i:s');
            $query->execute();

into using MySQL's NOW() function which is more simple.

$query = $mysqli->prepare('UPDATE player SET lastLogin = NOW(), loginstreak = ? WHERE idplayer = ?');
            $idplayer =  $_GET["idplayer"];
            $query->bind_param("is", $loginStreak, $idplayer);                
            $query->execute();

Upvotes: 1

ScaisEdge
ScaisEdge

Reputation: 133370

Try assign value before

  $query = $mysqli->prepare('UPDATE player SET lastLogin = ?,loginstreak = ? WHERE idplayer = ?');
        $qdata = $now->format('Y-m-d H:i:s');
        $idplayer =  $_GET["idplayer"];
        $query->bind_param("sis", $qdata, $loginStreak,  $idplayer );
        $query->execute();

Upvotes: 1

Related Questions