我正在使用 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);
Run Code Online (Sandbox Code Playgroud)
输出是: SELECT COUNT(*) FROM uchome_blog WHERE uid=$uid 这就是说变量 $uid 没有通过。如何将变量传递到计算的字符串中。谢谢。
变量替换仅适用于双引号字符串。
尝试这个:
$uid = 8;
$str = "SELECT COUNT(*) FROM uchome_blog WHERE uid=$uid"; # variable gets substituted here
eval("\$str = \"$str\"");
die("$str");
Run Code Online (Sandbox Code Playgroud)
我认为变量替换是在解析时发生的事情 - 它不是递归完成的,因此在您的 中eval, 的内容$str被粘贴到字符串中,但不会对$uidinside的内容再次完成$str。