从数据库中的表字段中获取 PHP 代码
Posted
技术标签:
【中文标题】从数据库中的表字段中获取 PHP 代码【英文标题】:Fetching PHP code from table field in database 【发布时间】:2021-11-16 01:57:48 【问题描述】:我有一个表notifications
,其中有一个字段notification
,它具有值:
<?php echo '.$user['name'][0].' ?>, you are <?php echo popularity(); ?>% popular today.
输出为:, you are % popular today.
这里忽略了PHP。我不明白为什么。
预期输出为Shubham, you are 35% popular today.
在检查元素的网络下,带有原始数据的响应选项卡显示如下:
<div class="notiText">
<?php echo $user['name'][0]; ?> you are <?php echo popularity(); ?>% popular today.
</div>
这里有什么问题?为什么脚本没有从数据库中加载 PHP 标签?
编辑
我已经尝试从这里Reading php code from database 使用eval()
。但是,我必须在数据库中而不是在代码中这样做。新输出有这个eval(), you are eval()% popular today.
。还没看。
注意:我不能在编码中使用eval()
。这必须是动态的并且来自数据库。因此,任何想要建议 eval()
的人我都需要一个替代方法或解决方法来解决 eval()
和数据库的情况。
更新
这里是示例代码:
processes/notifications.php
$stmt = $pdo->prepare("SELECT notification FROM notifications");
$stmt-> execute();
$html = "<div class='notifications'>";
while($f = $stmt->fetch())
$html .= '<a href="'.$link.'">'.$f['notification'].'</a>';
$html .= "</div>";
echo $html;
jQuery
$(".notificationsBell").on("click", function(e)
$.ajax(
type: "POST",
url: "processes/notifications.php",
data: "all",
success: function(data)
$(".loadNotifications").html(data);
);
);
HTML
<div class="loadNotifications"></div>
更新 2
好的,下面的代码给了我正确的输出。
$str = ''.$user['name'][0].', you are '.popularity().'% popular today.';
eval("\$str = \"$str\";");
echo $str;
输出:Shubham Jha, you are 100% popular today.
现在,如何将该字符串($str
的值)插入数据库?在表格字段中,格式应该是什么,以便正确识别和回显。我试过了,但没有用。
'.$user['name'][0].', you are '.popularity().'% popular today.
返回此错误:
Parse error: syntax error, unexpected string content "", expecting "-" or identifier or variable or number in E:\xampp\htdocs\newchat\processes\notifications.php(65) : eval()'d code on line 1
【问题讨论】:
您应该显示生成上述代码的 php 代码。但是,您需要注意,从数据库中检索到的任何内容都是数据而不是代码。 因此,如果数据库中的数据是php代码,那么就必须通过eval()函数来执行,这个限制是没有办法绕过的。坦率地说,我不明白为什么你不能使用 eval() (嗯,为什么你首先需要将 php 代码存储在数据库中......)。请提供更多上下文! @Shadow 我已经更新了这个问题。我已经提供了从 PHP 代码到 AJAX 再到 HTML 的所有必要内容。请看一看。 回声流行度();??你到底是如何回应它的?!您可以回显一个变量,函数返回值或在函数内打印,然后直接调用它而不回显。 你应该 $something = Popular();然后回显 $something;也是一个字符串吗?如果返回的数据不是字符串,则无法回显它... print_r($something); 【参考方案1】:试试这个:
while($f = $stmt->fetch())
// STORE IN SIMPLE VARIABLES
$name = $user['name'][0];
$popularity = popularity();
$notiText = $f['notification'];
eval("\$notiText = \"$notiText\";");
$html .= '<a href="'.$link.'">'.$notiText.'</a>';
在数据库中使用这些简单的变量名,避免使用引号。
$name, you are $popularity% popular today.
【讨论】:
完美....谢谢:)以上是关于从数据库中的表字段中获取 PHP 代码的主要内容,如果未能解决你的问题,请参考以下文章