2012-08-22 27 views
0

我在包含php变量的Mysql表中有一个字段,用于确定存储文件的目录(例如,Docs/$CompID/Acc/$AccID/)。问题是,当我检索值时,显示php变量名称而不是值。在mysql字段中使用php变量

我试图放置引号值 -

无论在MySQL表(Docs/$CompID/"Docs/".$CompID."/

并显示PHP变量时(echo"$dir"

我还试图做str_replace,将{ }放在变量的周围,以便我可以在字符串中标识它:

$start=strrpos($cat['dir'],'{'); 
$stop=strrpos($cat['dir'],'}'); 
$rep=substr($cat['dir'],$start+1,$stop-1); 
$dir=str_replace("{".$rep."}",$rep,$cat['dir']); 

所有这些只显示php变量名称。任何帮助,将不胜感激!

+0

是什么'$猫[ '目录']'是什么样子? –

+0

Docs/$ CompID /和Acc/$ AccID /是$ cat ['dir']中数据类型的示例。当我尝试使用str_replace时,我将它们更改为Docs/{$ CompID} /和Acc/{$ AccID}/... – Alan

回答

2

您可以使用eval()

$AccID = 'me'; 
eval("\$str = \"Acc/$AccID/\";"); 
echo $str; 
+0

这个工程,如果我把变量保存到另一个像这样: $ dir = $ cat ['dir']; eval(“\ $ str = \”$ dir \“;”); echo $ str; 但不是这样的: eval(“\ $ str = \”$ cat ['dir'] \“;”); echo $ str; 任何想法为什么? – Alan

+2

因为你用引号 –

+1

'eval(“\ $ str = \”Acc/$ cat [dir]/\“;”);'工作得很好.. –

1

如果我是正确的,你的变量将如下所示:var。您可以通过$$cat["dir"]访问$var。但是,如果您的db变量看起来像$var,则只需使用一个简单的子字符串即可删除$

+0

我试过了,但它只在php变量是Mysql字段中唯一的东西。当字段中包含文本和变量时,它将使用整个值作为变量。 – Alan

+0

虽然这真的很棒!但是,我一定会记住这一点,但是,当整个Mysql字段是一个PHP变量! – Alan