我使用的是php eval()函数,下面是我的语句:
$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没有通过。如何将变量传递到计算的字符串中。谢谢。
发布于 2011-05-26 14:52:02
不能直接将varuiable插入到单引号字符串中。试试这个:
$str = "SELECT COUNT(*) FROM uchome_blog WHERE uid=$uid"; // double-quotet或者这样:
$str = 'SELECT COUNT(*) FROM uchome_blog WHERE uid='.$uid; // string-concatenation发布于 2018-01-19 14:39:21
根据php手册:http://php.net/manual/en/function.eval.php
代码将在调用eval()的代码范围内执行。因此,eval()调用中定义或更改的任何变量在终止后都将保持可见。
因此,如果您需要的变量是在您调用eval()的作用域中定义的,那么一切都应该按预期工作。
发布于 2011-05-26 14:51:39
变量替换仅适用于双引号字符串。
试试这个:
$uid = 8;
$str = "SELECT COUNT(*) FROM uchome_blog WHERE uid=$uid"; # variable gets substituted here
eval("\$str = \"$str\"");
die("$str");我认为变量替换是在解析时发生的-它不是递归完成的,所以在您的eval中,$str的内容被粘贴到字符串中,但对于$str中的$uid内容不会第二次完成。
https://stackoverflow.com/questions/6134756
复制相似问题