首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从MySQL数据库表中调用PHP函数,以使函数正常运行?

如何从MySQL数据库表中调用PHP函数,以使函数正常运行?
EN

Stack Overflow用户
提问于 2014-07-24 07:13:40
回答 2查看 1.8K关注 0票数 0

这是一个很难问的问题。他是我的问题/问题。

有没有可能将一个PHP函数放在一个MySQL表/单元格中,并在通过PHP查询调用时让该函数正常运行?如果是这样,我该怎么做呢?

下面是我的查询代码:

代码语言:javascript
复制
$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 . ']');

}

下面是显示查询结果的循环代码:

代码语言:javascript
复制
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函数。该函数为:

代码语言:javascript
复制
<?php star5(); ?>

当我刷新页面并查看应该调用函数的位置时,它是一个空白区域。那里什么都没有。当我查看源代码以查看是否有错误时,它会显示我输入到单元格中的确切字符。它将文本放到页面上,服务器不会运行脚本或解释函数。

下面是数据库中该表的图像。这与te列‘site-name’有关:

http://i.imgur.com/0XWBqtR.jpg

我已经试着解决这个问题将近4个小时了。一如既往的提前感谢!

编辑:这是它自己的函数

代码语言:javascript
复制
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>';
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-24 07:35:50

这不是最好的方式,但在目前的情况下,它是最接近在DB中引入标志以便在其上具有逻辑的良好实践的解决方案。

假设您想要控制用户是否是管理员。您可以添加一个包含10值的列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字符串。否则,您添加的是普通内容(例如,实际站点名称)。

然后,当您获取记录时,执行一个简单的条件检查:

代码语言:javascript
复制
if ($row['sitename'] == 'CUSTOM FUNCTION') {
    star5();
} else {
    echo $row['sitename'];
}
票数 2
EN

Stack Overflow用户

发布于 2014-07-24 07:38:21

尝试使用php eval()函数。例如:

eval("\$row['site-name'] = \"$row['site-name']\";");

另外,从数据中删除php标记。尝试只保留star5()函数调用。

有关eval的更多详细信息,请查看此Link

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24922591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档