2011-04-22 13 views
3

我有一個行的MySQL表其列的方式包括:如何返回一個常量或PHP文本字符串 - 是的eval()去

This is a test. 

我有另一行的相同MySQL的表,其同列包含:

K_IM_A_CONSTANT 

早年在PHP腳本,這行代碼是否存在:

define(K_IM_A_CONSTANT, 'This is a constant.'); 

我怎麼可以發選擇列的內容,其中返回的值將是「這是一個測試」。或「這是一個常量」,取決於所選的行?

eval()是否這樣做?如果是這樣,eval()語法怎麼看?我試圖讓eval()工作的錯誤太多了。

感謝您的幫助。

+0

見我附加與[續] – 2011-04-22 21:27:08

回答

7

使用constant功能:

if(defined($row['column_name'])) 
{ 
    echo constant($row['column_name']); 
} 
+0

好澄清,我的MySQL查詢選擇的結果開始是$ row ['the_column'] ....所以我會嘗試你的常量($ row ['the_column'])解決方案。 – 2011-04-22 19:24:28

+0

當列包含常量,但當列包含文本字符串時,它工作正常我得到以下錯誤 - 無法找到常量這是一個測試。 – 2011-04-22 19:27:39

+1

@Dr。點,當然你會因爲傳遞給'常量'的文本不是一個常量。 – 2011-04-22 19:29:39

0

所以給出一段文字,您要查找其值的一段文字匹配的常量的名稱嗎?這似乎是「常量」給我一個可怕的虐待,但是,你想使用get_defined_constants()

function find_constant_name($text) { 
    $constants = get_defined_constants(); 
    foreach($constants as $const => $val) { 
     if ($val == 'Your specified text') { 
      return($const); 
     } 
    } 
} 

find_constant_name('This is a test.'); 
+0

那麼,我只想返回列的內容。如果列內容是一個常量,我想要它的定義值,我只想要列的值。 – 2011-04-22 19:36:50

相關問題