|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2004-10-29 21:26 UTC] john at milsson dot nu
Description:
------------
Fatal error: Objects used as arrays in post/pre increment/decrement must return values by reference
when I try to use $mysqli_stmt->bind_param('s',$arrayAccessObj['offset']);
even though offsetget is declared as
function &offsetGet($key) {
return $this->{'_'.strtolower($key)};
}
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Oct 25 03:00:01 2025 UTC |
Tried to trigger this at home. But it works as expected. But: 1. This is a linux machine. 2. Home compiled 3. I'm not stressed out... 4. The code is much cleaner. My guess is that I screwd up with one of the '&' in some deep nested retuen tree As I said, this code works: class ArrayObj implements ArrayAccess { private $_val; public $valAsProp; function __construct($val){ $this->_val = $val; $this->valAsProp =& $this->_val; } // // ArrayAccess interface // function offsetExists($key) { return isset($this->{'_'.$key}); } function &offsetGet($key) { return $this->{'get'.ucfirst($key)}(); } function offsetSet($key,$val) { $this->{'_'.$key} = $val; } function offsetUnset($key) { $this->{'_'.$key} = null; } function &__get($key) { return $this->{'_'.$key}; } function &getVal() { return $this->_val; } } $arrayobj = new ArrayObj(new ArrayObj('an other val')); $db = new mysqli('localhost'); $stmt = $db->prepare("SELECT ? as `val`"); //$stmt->bind_param('s', $arrayobj->valAsProp); //$stmt->bind_param('s', $arrayobj->val); $stmt->bind_param('s', $arrayobj['val']['val']); $stmt->execute(); $stmt->bind_result($res); $stmt->fetch(); $stmt->close(); echo "\n$res\n"; ?>