|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2015-10-25 20:48 UTC] it_poz at interia dot eu
Description:
------------
The mysqli_stmt::bind_param() needs the “ready” variables but doesn’t accept the parameters as results – in such cases PHP parser outputs the Fatal error: Uncaught Error: “Cannot pass parameter 2 by reference”
Test script:
---------------
Example 1 (it works):
$stmt->bind_param('i', 1)
Example 2 (it doesn’t work and Fatal error is signaled):
$stmt->bind_param('i', ($i + 1))
Expected result:
----------------
I would expect this method working with the parameter’s values calculated in real time, not just only with “ready” values.
Actual result:
--------------
Uncaught Error: Cannot pass parameter 2 by reference - for the code example 2
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Oct 25 06:00:01 2025 UTC |
As of PHP 8.1.0, you can pass an array of *values* to mysqli_stmt::execute() instead of having to call ::bind_param()[1]. For previous PHP versions, you can use the splat operator: $stmt->bind_param('i', ...[$i + 1]) [1] <https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.mysqli.bind-in-execute>