在PHP中从数据库调用函数
我有这样一个要求,即我必须在数据库列中有一个函数签名作为值。所以我需要做的是得到那个值,然后在代码中调用函数。例如……假设我在数据库中有一个名为“Signature”的列,其值为SendMail();。我需要能够获取返回值,然后将其存储在另一个表中。问题是,当我在$I['Signature']上使用eval函数时,函数被调用,但我无法获得返回值。我做错了什么?下面是一个例子:在PHP中从数据库调用函数,php,eval,Php,Eval,我有这样一个要求,即我必须在数据库列中有一个函数签名作为值。所以我需要做的是得到那个值,然后在代码中调用函数。例如……假设我在数据库中有一个名为“Signature”的列,其值为SendMail();。我需要能够获取返回值,然后将其存储在另一个表中。问题是,当我在$I['Signature']上使用eval函数时,函数被调用,但我无法获得返回值。我做错了什么?下面是一个例子: $query = "SELECT signature FROM tbl WHERE id = 1 "; $signatu
$query = "SELECT signature FROM tbl WHERE id = 1 ";
$signature = mysql_query($query);
while ($i = mysql_fetch_array($signature)){
//Here the function is being called properly but I can't get the return value.
$email= eval($i['Signature']);
if(mysql_num_rows($i) == 0){
//insert the returned value into another table.
$insertString = "INSERT INTO tbl (email) VALUES ('$email')";
}
}
function SendMail()
{
$email= 'Have a great day'
return $email;
}
此外,我肯定会得到一些“eval是邪恶的”评论,所以如果有更好的方法,请建议 从
因此,您应该添加return
:
$email= eval('return ' . $i['Signature']);
或者:
eval('$email = ' . $i['Signature']);
从
因此,您应该添加return
:
$email= eval('return ' . $i['Signature']);
或者:
eval('$email = ' . $i['Signature']);
最好将函数名作为字符串存储在一列中,将要传递给函数的参数作为序列化数组存储在另一列中。然后,您可以使用从函数中获取返回值,而无需使用
eval()
您最好将函数名作为字符串存储在一列中,将要传递给函数的参数作为序列化数组存储在另一列中。然后,您可以使用从函数中获取返回值,而无需使用eval()
我来试一试。我刚刚读了那份声明,但没有完全理解。我会试一试的。我只是读了那句话,但没有完全理解。如果你必须坚持使用eval,至少先检查签名栏的内容是否确实有效。可能通过函数\u exists
函数:如果必须坚持eval,至少首先检查签名列的内容是否确实有效。可能通过函数存在
函数:有趣。我来试一试,很有趣。我来试一试。