首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将变量传递给php eval()

问将变量传递给php eval()
EN

Stack Overflow用户
提问于 2011-05-26 14:48:58
回答 5查看 4.7K关注 0票数 3

我使用的是php eval()函数,下面是我的语句:

代码语言:javascript
复制
$uid = 8;
$str = 'SELECT COUNT(*) FROM uchome_blog WHERE uid=$uid';
eval("\$str = \"$str\"");
die("$str");
//$query = $_SGLOBAL['db']->query($str);
//$result = $_SGLOBAL['db']->fetch_array($query);

输出是: SELECT COUNT(*) FROM uchome_blog WHERE uid=$uid,也就是说变量$uid没有通过。如何将变量传递到计算的字符串中。谢谢。

EN

回答 5

Stack Overflow用户

发布于 2011-05-26 14:52:02

不能直接将varuiable插入到单引号字符串中。试试这个:

代码语言:javascript
复制
$str = "SELECT COUNT(*) FROM uchome_blog WHERE uid=$uid"; // double-quotet

或者这样:

代码语言:javascript
复制
$str = 'SELECT COUNT(*) FROM uchome_blog WHERE uid='.$uid; // string-concatenation
票数 1
EN

Stack Overflow用户

发布于 2018-01-19 14:39:21

根据php手册:http://php.net/manual/en/function.eval.php

代码将在调用eval()的代码范围内执行。因此,eval()调用中定义或更改的任何变量在终止后都将保持可见。

因此,如果您需要的变量是在您调用eval()的作用域中定义的,那么一切都应该按预期工作。

票数 1
EN

Stack Overflow用户

发布于 2011-05-26 14:51:39

变量替换仅适用于双引号字符串。

试试这个:

代码语言:javascript
复制
$uid = 8;
$str = "SELECT COUNT(*) FROM uchome_blog WHERE uid=$uid"; # variable gets substituted here
eval("\$str = \"$str\"");
die("$str");

我认为变量替换是在解析时发生的-它不是递归完成的,所以在您的eval中,$str的内容被粘贴到字符串中,但对于$str中的$uid内容不会第二次完成。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6134756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档