2016-08-19 52 views
0

這一個應該很容易,它會殺死我我找不到解決方案!如何從SQL結果中創建動態變量

我有一個SQL查詢從數據庫返回記錄。我使用的兩個字段是$ row [「staff_id」]和$ row [「name」]。

,從我想建立一個動態的變量,它是這樣的:

$staffid_1 = "Mark Smith"; 
$staffid_2 = "Sally Baker"; 
$staffid_3 = "Peter Pan"; 

是動態創建的varibale名稱的第一部分相結合「staffid_」和$行[「staff_id」]然後$行[「name」]作爲名稱。

我已經試過:

${$staff_id . $row["staff_id"]} = $row["name"]; 
echo ${$staff_id . $row["staff_id"]} . "<br>"; 

,但沒有運氣!任何援助將不勝感激:)

+0

你在哪裏獲得'$ staff_id'?它尚未初始化。 '$ {'staffid_'。 $ row ['staff_id']}' – Ghost

+0

then'echo $ staffid_1;'我會遠離這個,但爲什麼要這樣? – Ghost

回答

0

我想你可能是最好改變你的查詢返回了它的第一部分,那麼無論你是從串聯到一起調用它,如

查詢:

SELECT '$staffid_' + ltrim(rtrim(cast(staff_id as varchar))) + ' = "' + name + '"' 
FROM [table list] 
ORDER BY ... 

然後拼接結果集的各行的要求,與
在兩者之間,你似乎需要。

0

好了,所以在PHP中,你必須使用雙平整變量這基本上意味着這一個真棒選項:

$$varname = $value; 

這導致的事實是,如果你有一個字符串變量, (例如$staffid = "staffid_1")你可以做到以下幾點:

$staffid = "Jasonbourne"; 
$$staffid = "Matt Damon"; 
// Will result in 
$JasonBourne = "Matt Damon"; 

因此,對於你的例子:

$name = "staffid_" . $row["staff_id"]; 
$$name = $row["name"]; 

將導致變量:$staff_id_1 = "Mark Smith";

要了解更多有關雙 - 拉平變量: http://php.net/manual/en/language.variables.variable.php

編輯:如果您通過行想循環:

foreach ($sql_result as $row) { 
    $name = "staffid_" . $row["staff_id"]; 
    $$name = $row["name"]; 
}