データベースから顧客の電子メール アドレスを取得したい場合、次の方法は不適切です。$row には、customer
テーブル内のすべてのフィールドの要素が含まれるためです。
$result = mysqli_query ('SELECT * FROM customer WHERE custid = 1');
$row = mysqli_fetch_array ($result, MYSQLI_ASSOC);
$row には電子メール アドレスの 1 つの要素が含まれるため、これはより適切であると考えられます。必要なのはこれだけです。
$result = mysqli_query ('SELECT email FROM customer WHERE custid = 1');
$row = mysqli_fetch_array ($result, MYSQLI_ASSOC);
同じロジックをオブジェクトに適用しようとしています。「顧客」オブジェクトに 50 個のプロパティ/フィールドがある場合、1 つだけにアクセスする必要があるときに 50 個のプロパティすべてを入力するのは一般的ですか?
以下は顧客クラスとオブジェクトの基本的な例です。顧客の電子メールアドレスを取得するだけで、他のすべての詳細を取得したくない場合、リソースを大量に消費します (この例では、「顧客」オブジェクトには 5 つのプロパティがありますが、実際にはもっと多くの可能性があります):
class Customer {
private $custid;
private $firstname;
private $lastname;
private $email;
private $dateadded;
public function getCustomer ($id) {
$result = mysql_queryi ('SELECT * FROM customer WHERE custid = ' . $id);
$row = mysqli_fetch_array ($result, MYSQLI_ASSOC);
foreach ($row as $key => $value) {
if (isset ($this->$key)) {
$this->$key = $value;
}
}
}
}
$customer = new Customer ();
$customer->getCustomer (1); // All I wanted is the email address, but now I have everything :-(