我創建了一個簡單的類,旨在從MySQL DB中檢索職員的詳細信息。這裏是類:設置和訪問PHP類對象的屬性,其中的值已從類中的數據庫中檢索
class staff {
public function __construct($db, $id){
$record = $db->prepare("SELECT * FROM staff WHERE id = :id");
$record->execute(array(':id' => $id));
foreach($record as $k=>$v){
$this->$k = $v;
}
}
}
這裏是電話:
$staffMember = new staff($db, $uid);
var_dump($staffMember);
而且後續代碼var_dump給出了這樣:
object(staff)#7 (1) {
["0"]=>
array(2) {
["fname"]=>
string(4) "Mike"
[0]=>
string(4) "Mike"
}
}
到目前爲止好,我能看到的東西被檢索和組。但我對實現並不滿意,原因有兩個:
1)看起來數值是重複的,因爲我在返回的數組中有兩個「Mike」。爲什麼會發生這種情況,我該如何預防?
2)訪問值並不簡單,在主PHP文件我用的線沿線的東西:
$staffMember->{0}["fname"];
檢索工作人員名字的價值。這看起來不正確,我希望使用$ staffMember-> fname。是否有另一種方法會導致將檢索的DB值設置爲類/對象變量,而不是實際上是一個數組的單個屬性,訪問相當麻煩,甚至可能更難以操作?
我在此先感謝。
'$ db'是一個'PDO'實例嗎? – deceze
因爲你有關聯數組(fname)和數組數組(0),所以你有兩次相同的結果;他們實際上是相同的結果,但因爲您的請求不明確,所以兩個結果都會提供。 –
是的。對不起,我應該澄清一點。 $ uid是在頁面的其他地方設置的用戶id值,對應於用戶名,DoB等所保存的DB中的記錄。 – MikeK