我在函数中执行变量代码,这是函数:
function request_data_sql($sql, $req) {
global $conn;
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) {
return $req;
}
}
}
我通过以下代码提供信息:
request_data_sql("SELECT email FROM login WHERE userid = '4'", "echo $"."row['email']");
如果我删除了函数中的返回值,它会执行代码,但当我把它放回去时,它会返回' echo $ row [' email']'。
当我执行代码时,它会像浏览器一样出现:
function request_data_sql($sql, $req) {
global $conn;
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) {
echo $row['email'];
}
}
}
但它实际上并没有回复电子邮件,因为我认为该函数会将变量$ req读为' echo $ row [' email']'。
我有什么方法可以在数据库中返回电子邮件吗?
编辑:我希望我能更好地解释它,对不起以前的错误解释感到抱歉。答案 0 :(得分:0)
<强>注意强>
eval()
语言构造非常危险,因为它允许执行任意PHP代码。因此不鼓励使用它。如果您已经仔细验证除了使用此构造之外没有其他选择,请特别注意不要将任何用户提供的数据传递到其中,而不事先正确验证它。
我首先发出警告,因为你应该真的,真的试图寻找替代品。但是如果你必须这样执行它,你可以这样做:
function request_data_sql($sql, $req) {
global $conn;
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) {
eval($req.";");
}
}
}
功能文档here