2012-09-06 23 views
1

使用PDO我已經構建了一個簡潔的對象,用於從數據庫中檢索作爲PHP對象的行,第一列值爲名稱,第二列值爲期望值。PHP PDO簡潔的mySQL SELECT對象

$sql = "SELECT * FROM `site`"; $site = array(); 
foreach($sodb->query($sql) as $sitefield){ 
    $site[$sitefield['name']] = $sitefield['value']; 
} 

我現在想將其與2個參數適用於函數時,該第一包含表,以及包含任何where子句到然後產生相同的結果的第二個。

function select($table,$condition){ 
    $sql = "SELECT * FROM `$table`"; 
    if($condition){ 
     $sql .= " WHERE $condition"; 
    } 
    foreach($sodb->query($sql) as $field){ 
     return $table[$field['name']] = $field['value']; 
    } 
} 

有觀點認爲,這可以被稱爲是這樣的:

<?php select("options","class = 'apples'");?> 

,然後以同樣的格式,第一種方法頁面上使用。

<?php echo $option['green'];?> 

給出與列名爲field中名爲'green'的值位於同一行的列值的值。

問題當然是函數不會像這樣返回foreach數據。那就是這個位:

 foreach($sodb->query($sql) as $field){ 
      return $table[$field['name']] = $field['value']; 
     } 

不能返回那樣的數據。

有沒有辦法做到這一點?

+0

你想要做什麼?我覺得有點難以遵循你想要完成的事情。你能詳細說明一下嗎? – PeeHaa

+0

一個PHP對象,用於任何我喜歡的表(因此函數),它給了我一個對象,我可以使用一列中的行調用它們相應列的值。也就是說,如果一列被稱爲「字段」,另一個「值」,我希望能夠通過字段值從該表中調用一個值。說回聲$站點['綠色']會查找與綠色作爲字段列中的值的行,並返回該值在該行的值列中。爲此,我希望獲得所有字段列行的對象,並通過該列名稱的行值調用它們。 –

回答

0

那麼,這:

$sql = "SELECT * FROM `site`"; $site = array(); 
foreach($sodb->query($sql) as $sitefield){ 
    $site[$sitefield['name']] = $sitefield['value']; 
} 

很容易成爲這樣的:

$sql = "SELECT * FROM `site`"; 
$site = array(); 
foreach($sodb->query($sql) as $row) 
{ 
    $site[] = $row; 
} 

print_r($site); 

// or, where 0 is the index you want, etc. 
echo $site[0]['name']; 

所以,你應該能夠得到一個地圖對所有列的進入多維數組$site

此外,不要忘記清理您的輸入,然後再將它們轉儲到該查詢中。 PDO的好處之一是使用佔位符來保護自己免受惡意用戶的侵害。

+0

@PeeHaa:這就是爲什麼我指出OP應該使用PDO佔位符,而不是串接字符串,因爲他是現在。我的意思是暗示他們需要消毒,或者正確使用PDO,並且必須帶有參數。 – Josh

+0

有趣的方法,但是a)當函數被列出而不是函數被調用時,甚至不會在函數外部打印。 (也許不會)。 b)衛生方面的好處。將明天測試並回復給你。謝謝。 –