2010-11-19 61 views
0

對不起,如果這聽起來像是一個非常愚蠢的問題,但我只是開始掌握面向對象編程的概念,我對PHP的單例模式感到困惑。面向對象查詢功能

我該如何合併一個查詢,並將保存爲變量的行的結果保存爲單例模式?

例如,下面的代碼如何被合併?

$query = "SELECT * FROM members WHERE email= '".mysql_real_escape_string($_SESSION['email1'])."'"; 
$result = mysql_query($query) or die(mysql_error()); 
$number = mysql_num_rows($result); 
$i = 0; 

while ($i < $number) 
{ 

    $first_name = mysql_result($result,$i,"first_name"); 
    $last_name = mysql_result($result,$i,"last_name"); 
    $state = mysql_result($result,$i,"home_state"); 
    $id_district = mysql_result($result,$i,"district"); 
    $political_views = mysql_result($result,$i,"political_views"); 
    $first_issue = mysql_result($result,$i,"first_issue"); 
    $second_issue = mysql_result($result,$i,"second_issue"); 
    $third_issue = mysql_result($result,$i,"third_issue"); 
    $email = mysql_result($result,$i,"email"); 
    $iStand = mysql_result($result,$i,"iStand"); 
    $photo = mysql_result($result,$i,"photo"); 
    $code = mysql_result($result,$i,"code"); 
    $changed = mysql_result($result,$i,"changed"); 
    $mem_ID   = mysql_result($result,$i,"member_ID"); 
    $pass = mysql_result($result,$i,"password"); 
    $privacy = mysql_result($result,$i,"privacy"); 
    $since = mysql_result($result,$i,"invite_date"); 
    $nombre = mysql_result($result,$i,"peer_name"); 

    $i++; 
    } 
+0

與問題無關,但首先是什麼代碼?爲什麼要提取多行只是將最後一行的值放入變量中?爲什麼要將每列分別分配給一個變量,而不是僅僅要求將整行作爲關聯數組(mysql_fetch_array)?這段代碼不應該存在! – 2010-11-19 06:03:23

+0

由於電子郵件字段是唯一的,因此只有一行是從數據庫中提取的,因此沒有兩個用戶可以擁有相同的電子郵件。 – Lance 2010-11-19 06:06:28

+0

在這種情況下,你不應該需要一個while循環。 – BoltClock 2010-11-19 06:38:42

回答

0

Singleton模式都有特定用途:

the singleton pattern is a design pattern used to implement the mathematical concept of a singleton, by restricting the instantiation of a class to one object. This is useful when exactly one object is needed to coordinate actions across the system

這是不適合你已經上面介紹的功能。

例如,在創建系統級設置類時將使用單例模式。 Singleton可以防止自己被多次實例化(或根本不需要),而是提供一個地方來獲取和設置設置信息。

+1

您可以添加Singleton是一個應該避免的AntiPattern。 – Gordon 2010-11-19 11:19:23