我很难理解为什么在某些情况下访问 PDO 中的密钥的特定方式有效,而当我尝试自己时却没有。
例如,
$sth = $this->dbh->prepare("UPDATE eq_question SET ". $user->field ."=? WHERE questID=?");
这个 PDO 访问了一个数组的键(它在一个 javascript 对象中,然后在 PHP 中发布和 json_decoded)$user->field
,但是当我尝试模拟解码的数组并使用var_dump ($user->field)
时,我会收到NULL
.
谁能告诉我为什么会这样?
在下面的示例中,当 I 时var_dump ($user)
,我可以看到所有键,但是当我看到时var_dump($user->field)
,我只收到null
,因此导致课程updateValue
失败。
一个例子来看看我的意思:
class User {
private $dbh;
public function __construct($host,$user,$pass,$db) {
$this->dbh = new PDO("mysql:host=".$host.";dbname=".$db,$user,$pass); }
public function updateValue($user){
$sth = $this->dbh->prepare("UPDATE eq_question SET ". $user->field ."=? WHERE questID=?");
$sth->execute(array($user->newvalue, $user->id));
}
$user = new stdClass;
echo " <br>|||SPACE||| BEFORE ASSIGN A OBJECT OT THE ARRAY- ";
$userParams = array('id' => 1, 'field' => 'questTitle', 'newvalue' => "Baaaaa");
var_dump($userParams);
$user = json_encode(array("user"=>$userParams));
echo " <br>|||SPACE||| BEFORE DECODE- ";
var_dump($user);
echo " <br>|||SPACE||| BEFORE DECODE of field- ";
var_dump($user->field);
$user = json_decode($user);
echo " <br>|||SPACE||| AFTER DECODE- ";
var_dump($user);
$userN=new User(...//info is hided by intention!);
$dump=$userN->updateValue($user);
echo " <br>|||SPACE||| PRINT----- ";
print($dump);
echo " <br>|||SPACE||| VAR_DUMP----- ";
var_dump($dump);
谢谢你