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

时间:2016-08-19 04:37:56

标签: php sql

这个应该很容易,这让我感到害怕,我无法找到解决方案!

我有一个SQL查询从数据库返回记录。我使用的两个字段是$ row [“staff_id”]和$ row [“name”]。

由此我想构建一个动态变量,如:

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

动态创建varibale名称是为第一部分组合“staffid_”和$ row [“staff_id”],然后为名称$ row [“name”]组合。

我试过了:

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

但没有运气!任何帮助将不胜感激:)

2 个答案:

答案 0 :(得分:0)

我认为你可能最好更改你的查询以返回它的第一部分,然后你要调用它来连接它,例如

查询:

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

然后根据需要连接结果集的各行,并在您看来需要之间插入。

答案 1 :(得分:0)

好的,在PHP中你有一个很棒的选项来使用double leveled变量,这基本上意味着:

$$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"];
}