猿问

是否可以从 mysql 数据库运行 php 代码?

我有一个有多个问题的 mysql 数据库。一些问题包含 php 变量。当我尝试回显 mysql 数据时,变量不起作用。


我尝试过 eval,但大多数人都说它不安全,而且对我不起作用。


数据库.php


$sql = "SELECT * FROM vragen ORDER BY RAND()";

$result = $conn->query($sql);

$row = $result->fetch_assoc();

$vragen = print_r($row[vraag],true); 

mysql数据


$player1[$rnd1]." take 2 drinks"

游戏.php


require "database.php";

    echo $vragen;  // string with hardcoded variables

我希望让变量在 php 中工作。


慕工程0101907
浏览 215回答 2
2回答

大话西游666

是的,可以使用eval关键字。例如(使用示例中的变量):# This would interpret everything stored in this variable as PHP code. eval($vragen);请记住,eval关键字不返回值,因此如果您的目标是echo输出,则echo在使用eval. 例如:eval($vragen);将内容$vragen直接输出到输出流(浏览器)中,但是$return_value = eval($vragen);只会检查是否eval能够运行。任何return;或return false将结束eval代码。最后,可能值得注意的是,根据evalPHP 手册,在从运行的 PHP 脚本中访问变量方面:代码将在调用 eval() 的代码范围内执行。因此,在 eval() 调用中定义或更改的任何变量在它终止后都将保持可见。您可以eval在此处找到有关存储在 MySQL 中的 PHP 上下文中使用的关键字的其他示例。但是,正如上述评论者正确指出的那样,由于超出您的问题范围的许多原因(是否可能),这是非常不鼓励的。但是,为什么你不应该这样做了一个有趣的讨论,在这里,如果你有兴趣。有关更多信息,eval关键字的PHP手册页是这里

12345678_0001

您可以通过将 C 代码编译到服务器中来在 MySQL 中编写自定义本机函数,并且您可以在 C 程序中调用外部进程,所以我想答案是肯定的。这回答了你的问题,但并没有解决你的问题。无论如何,您都在使用 PHP 来检索这些字符串。您可以在获取它们后简单地操作它们:$input = '{player1} buys 2 drinks for {player2}.';$variables = [    '{player1}' => 'Jim',    '{player2}' => 'Joe',];$output = strtr($input, $variables);
随时随地看视频慕课网APP
我要回答