我正在做一些我需要在mysql数据库中存储if语句的东西。我需要提取这些语句并使用它们,每个语句都是我正在测试的算法。我知道你可以在一个变量中存储if语句,例如" $ abc = $ x> 1&& $ f == 1;"如果你运行if($ abc){}它会工作,我想我可以在这里做同样的事情,但当我运行if($ abc)并且$ abc是来自数据库的if语句时它不能正常工作,它在if语句中运行代码,因为$ abc存在。代码如下......
$getAlgorithms = mysqli_query($mysql_connect, "SELECT * FROM `algorithms2`");
while($algorithms = mysqli_fetch_array($getAlgorithms)) {
$algorithmID = $algorithms['id'];
$algorithm = $algorithms['algorithm'];
if($algorithm) {
echo("HELLO WORLD");
}
}
$ algorithms ['算法']的虚拟示例;会拉:$ r> = $ var_x&& $ z< = $ var_y&& $ lz> = $ var_c
我非常感谢帮助,这非常重要。如果您有任何疑问,请询问。
注意:这是一个100%的内部平台
答案 0 :(得分:1)
听起来你正在寻找eval(),但请注意,如果除了你之外有人有可能创建字符串,那么使用它会特别危险。可能有更好,更安全的方式来实现你想要做的任何事情。
答案 1 :(得分:1)
您的代码需要使用eval()
按原样运行:
$getAlgorithms = mysqli_query($mysql_connect, "SELECT * FROM `algorithms2`");
while($algorithms = mysqli_fetch_array($getAlgorithms)) {
$algorithmID = $algorithms['id'];
$algorithm = $algorithms['algorithm'];
if(eval("return {$algorithm};")) {
echo("HELLO WORLD");
}
}
但是,从外部源(数据库)执行任意代码可能会带来可怕的安全风险:仅仅因为您希望 $algorithm
是一个良性算术表达式而不是意味着它不能是恶意函数调用或其他语句,例如,如果有人可以将system('rm -rf /')
作为算法输入到您的数据库中,那么您可能会遇到糟糕的一天。
在不知道您要解决的确切问题的情况下,很难提出更好的解决方案,但我更倾向于将“算法”放在代码中的数组或其他硬编码数据结构中而不是数据库,它更安全,因为任何可以改变该列表的人都可以执行任意代码。
答案 2 :(得分:0)