在返回之前在变量中执行代码

时间:2016-11-30 08:50:04

标签: php function

我在函数中执行变量代码,这是函数:

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']'。

我有什么方法可以在数据库中返回电子邮件吗?

编辑:我希望我能更好地解释它,对不起以前的错误解释感到抱歉。

1 个答案:

答案 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