2012-09-04 116 views
0

我想創建一個用戶定義的函數來查詢我的數據庫中的表,評估字段數,並將每個字段分配給一個變量。我已經能夠做到這一點,但返回是一個字符串,只顯示爲文本,當我真的希望它作爲代碼執行。執行一個函數返回的字符串作爲代碼

下面的代碼:

function query_function() { 
    $client_selected = "1"; 
    $name = ""; 
    $result = mysql_query("SELECT * FROM client_table WHERE client_id = '$client_selected'"); 
    $row = mysql_fetch_array($result); 
    $num=mysql_num_fields($result); 
    $i = 0; 
    while ($i < $num) { 
     $name .= "$" . mysql_field_name($result, $i); 
     $name .= " = $" . "row['" . mysql_field_name($result, $i) . "'];"; 
     $i++; 
    } 
    return $name; 
} 
+0

你有沒有在PHP中讀過['arrays'](http://php.net/array)?另外爲什麼你不只是'foreach'在'$ row'上? – mario

回答

1

這將是非常簡單的只是:

extract(mysql_fetch_assoc($result), EXTR_SKIP); 

http://php.net/manual/en/function.extract.php

同樣,你也可以做到這一點,你是這樣的方式:

$name = mysql_field_name($result, $i); 
$$name = $row[$name]; 

例如:

$row = array(
    'a' => 1, 
    'b' => 2, 
    'c' => 3, 
); 
extract($row, EXTR_SKIP); 
var_dump($a, $b, $c); 

$name = 'd'; 
$$name = 4; 
var_dump($d); 

http://codepad.org/yvW0G8xc

還要注意的mysql_*功能棄用。您應該使用mysqliPDO

0

我相信你要找的是什麼eval()

但是使用eval時要非常小心。只有當你100%確定你的查詢拉入$name變量時,才使用它。

+0

'eval'不是解決他的問題的最佳方法。 – Petah

相關問題