2010-05-06 20 views
0

我正在尋找在我的數據庫中創建一個選項表,使每個記錄成爲系統選項,所以我可以使用少量的字段。如何創建類似wordpress的選項表並獲取每行的值?

我分貝具有以下結構:命名idname

  • 3列,並value

以下數據被插入,例如:

+--+-----------+--------------------------+ 
|id|name  |value      | 
+--+-----------+--------------------------+ 
| 1|uri  |www.example.com   | 
| 2|sitename |Working it out   | 
| 3|base_folder|/folder1/folder2/   | 
| 4|slogan  |Just a slogan for the site| 
+--+-----------+--------------------------+ 

這樣我可以很容易地包含大量可定製的系統選項。

問題是我不知道如何檢索它們。 如何獲得uri and的值作爲var存儲? 更好的是,我怎樣才能得到,例如,只有id 1和4的值,而不是每次都進行查詢? (我假設多個查詢是無用的和一個非常醜陋的方法。)

我知道這個問題是非常基本的,但我迷失在這裏。 我真的很感謝你的回答!

+0

這是什麼樣的項目?什麼語言/平臺/框架? – 2010-05-06 19:52:15

+0

我想我錯過了那部分:D 我正在使用PHP和MySQL。沒有花哨添加。 – Ignacio 2010-05-06 19:53:26

+0

Donal,謝謝你編輯這個問題,並給它一個適當的格式! – Ignacio 2010-05-06 20:46:22

回答

0
$values = array(); 
$q = "SELECT * FROM table"; 
$resu = mysql_query($q); 

while ($row = mysql_fetch_array($resu)) { 
    $values[$row['name']] = $row['value']; 
} 

用法:

echo $value['variable_name']; 
0

這裏有一些讓你開始。沒有錯誤檢查或其他細微差別。我假設你的數據庫名稱是$ db_name,你上面描述的表稱爲'site_params'。

要從表中獲取單個參數...

// select your db 
mysql_select_db($db_name); 

// get the uri setting 
$query = "SELECT value FROM site_params WHERE name='uri'"; 
$result = mysql_query($query); 

如果沒有太多的設置,你可以只讓所有的人都在一次...

// get all the settings 
$query = "SELECT * from site_params"; 
$result = mysql_query($query); 

或讓他們中的一些...

// get uri and sitename 
$query = "SELECT * from site_params where name in ('uri', 'sitename') "; 
$result = mysql_query($query); 

您可以收到結果爲數組通過添加名爲$ site_info ...

$site_info = mysql_fetch_array($result, MYSQL_ASSOC); 

說明:這會在$ site-info中放入一行。重複調用它以獲得結果的多行。

要更改的參數之一...

// set new sitename 
$newsitename = 'http://mynewsite.com'; 
$query = "UPDATE site_params SET value='" . $newsitename . "' where name='sitename'"; 
$result = mysql_query($query); 

這就是你想要的?有關您需要的所有信息,請轉至http://php.net。例如:

http://php.net/manual/en/function.mysql-query.php

+0

太棒了!謝謝! 我想我是在正確的道路上。 我有一個類似的代碼。 但是我不知道如何獲得1個選項的值。如果我這樣做 <?php while($ row = mysql_fetch_array($ result)){ \t $ thumbnails_folder = $ row [「thumbnails_folder」]; } ?> 我什麼也沒得到,因爲行不存在。 對不起,我可能沒有解釋得很好。 我想避免的是對每個參數進行查詢。 例如,我一直在{}周圍使用網站列出用戶。我覺得我需要在這裏使用另一個功能,但我無法弄清楚哪一個。 再次感謝! – Ignacio 2010-05-06 20:41:33

+0

我不確定我是否理解你在做什麼(如果該行不存在,那麼你的查詢沒有把它拉進去),但是這聽起來像你可能認爲你的while循環正在做多個查詢。但事實並非如此。當您調用mysql_query時,唯一的查詢正在發生。 您可以執行一個查詢來獲取單個參數(以及對多個參數進行多個查詢),或者對多個參數執行單個查詢,然後從一行中的結果中檢索它們。 – Greg 2010-05-07 05:45:05

+0

對不起,看起來我無法解釋。 在上面的例子中,我有一個每個站點選項的條目(而不是一個有很多行的條目表,其中每個條目都可以是一個選項)。 我想要做的是將每個條目的第3行的值存儲爲var(或數組)。 所以,如果我這樣做,並回聲站點參數'base_folder'(這是ID#3條目),它給我的值'/ folder1/folder2 /'。 我需要在數據庫中的每一個條目,我認爲它可以做到沒有每個查​​詢。它可以? 感謝您的回答:D – Ignacio 2010-05-07 15:10:23

相關問題