如何从SQL结果中创建动态变量

问题描述:

这一个应该很容易,它会杀死我我找不到解决方案!如何从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

我想你可能是最好改变你的查询返回了它的第一部分,那么无论你是从串联到一起调用它,如

查询:

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

然后拼接结果集的各行的要求,与
在两者之间,你似乎需要。

好了,所以在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"]; 
}