public function getProfile($user_id)
{
$stmt = $this->_connection->prepare("SELECT * FROM Profile WHERE profile_id = :profile_id");
$stmt->execute(['profile_id'=>$user_id]);
$stmt->setFetchMode(PDO::FETCH_CLASS, "Profile_model"); //datatype user
return $stmt->fetch(); //it should return a user
}
嗨,我在这里写代码的时候。
当我们准备PDO时,它是prepare("SELECT * FROM Profile WHERE profile_id = :profile_id");
,为什么在profile_id前面呢?
和$stmt->execute(['profile_id'=>$user_id]);
,据我所知,=>类似于定义,因此左侧将是键,右侧将是值,所以这意味着profile_id变量将具有{ {1}}?
答案 0 :(得分:1)
svg
由于这仍然是未准备好的语句,而:profile_id是占位符(您可以想到变量之类的东西),因此在此阶段查询如下:
$stmt = $this->_connection->prepare("SELECT * FROM Profile WHERE profile_id = :profile_id");
但是,当您运行SELECT * FROM Profile WHERE profile_id = (YOUR PROFILE ID HERE)
时,它将$stmt->execute(['profile_id'=>$user_id]);
的值分配给占位符$user_id
。假设:profile_id
是$user_id
,查询将如下所示:
3
在使用关联数组时,SELECT * FROM Profile WHERE profile_id = 3
运算符将为键中的值赋值,所以您是对的。