这是一个很难问的问题。他是我的问题/问题。
有没有可能将一个PHP函数放在一个MySQL表/单元格中,并在通过PHP查询调用时让该函数正常运行?如果是这样,我该怎么做呢?
下面是我的查询代码:
$recent_query = "SELECT * FROM `recently-added` ORDER BY `created` DESC LIMIT 4";
if(!$recent_query_result = $con->query($recent_query)){
die('There was an error running the query [' . $con->error . ']');
}
下面是显示查询结果的循环代码:
while($row = $recent_query_result->fetch_assoc()) {
echo '<div class="col-md-3 col-sm-6 md-margin-bottom-40">
<div class="easy-block-v2">
<div class="easy-bg-v2 rgba-' . $row['color'] . '">New</div>
<img class="img-bordered" alt="' . $row['image-alt'] . '" src="' . $row['image'] . '">
<h3><i class="fa fa-smile-o"></i> ' . $row['site-name'] . '</h3>
<!-- Begin Recently Added Footer Description -->
</div>
</div>';
}
在我的数据库和‘recently added’表中,我有一个名为'site-name‘的列。我遍历循环并将结果显示在我的页面上。在site name单元格中,我为每条记录添加了PHP函数。该函数为:
<?php star5(); ?>
当我刷新页面并查看应该调用函数的位置时,它是一个空白区域。那里什么都没有。当我查看源代码以查看是否有错误时,它会显示我输入到单元格中的确切字符。它将文本放到页面上,服务器不会运行脚本或解释函数。
下面是数据库中该表的图像。这与te列‘site-name’有关:
http://i.imgur.com/0XWBqtR.jpg
我已经试着解决这个问题将近4个小时了。一如既往的提前感谢!
编辑:这是它自己的函数
function star5() {
echo '<li><i class="color-green fa fa-star"></i></li>
<li><i class="color-green fa fa-star"></i></li>
<li><i class="color-green fa fa-star"></i></li>
<li><i class="color-green fa fa-star"></i></li>
<li><i class="color-green fa fa-star"></i></li>';
}
发布于 2014-07-24 07:35:50
这不是最好的方式,但在目前的情况下,它是最接近在DB中引入标志以便在其上具有逻辑的良好实践的解决方案。
假设您想要控制用户是否是管理员。您可以添加一个包含1
或0
值的列is_admin
,然后在获取结果时可以检查if ($row['is_admin'] == 1) { // proccess the logic for administrator } else { // process logic for normal user }
这可能适用于这里,因为您希望在某些事件上执行后端逻辑,或者如果事件不存在,则只显示行内容。
根据be的说法,如果你为此引入新的列,并检查它,以便知道你是否应该调用star5()
,那么它会更好,但在当前的上下文中,你可以添加一个字符串,在这个字符串上,你将触发函数。
假设字符串为CUSTOM FUNCTION
。然后,如果您希望在此行上移动fetch指针时执行star5()
,则在此行中添加CUSTOM FUNCTION
字符串。否则,您添加的是普通内容(例如,实际站点名称)。
然后,当您获取记录时,执行一个简单的条件检查:
if ($row['sitename'] == 'CUSTOM FUNCTION') {
star5();
} else {
echo $row['sitename'];
}
发布于 2014-07-24 07:38:21
尝试使用php eval()
函数。例如:
eval("\$row['site-name'] = \"$row['site-name']\";");
另外,从数据中删除php标记。尝试只保留star5()
函数调用。
有关eval的更多详细信息,请查看此Link。
https://stackoverflow.com/questions/24922591
复制相似问题