【问题标题】:How to get defined value by variable如何通过变量获取定义的值
【发布时间】:2012-02-13 19:17:26
【问题描述】:

我的数据库表 1 行看起来像这样

我将正文中使用的所有变量存储在另一个名为vars 的列中。然后获取所有变量。如果它们是多个,则以“,”符号爆炸。

我想要做的是,从数据库中获取所有使用的变量,然后通过第二个函数filter 过滤它们。如您所见,过滤器有 3 个输入:$content, $needle, $replacement

$content - 消息正文,

$needle - %.我们在寻找什么。%

$replacement - 是我们从数据库中获得的 var,由 php 定义。例如,如果我从数据库中获取 wsurl,它已经在我的 settings.php 中定义,例如 DEFINE("wsurl", "www.yourdomain.com")。

问题是,我如何发送定义的值作为第三个输入 - $replacement

public function genMsg($id) {
    $msgid = $id;
    $stmt = $db->prepare('SELECT `body`, `status`, `vars` FROM `messages` WHERE `id`=?') or die(htmlspecialchars($this->db->error));
    $stmt->bind_param("i", $msgid) or die(htmlspecialchars($stmt->error));
    $stmt->execute() or die(htmlspecialchars($stmt->error));
    $stmt->bind_result($message, $status, $vars) or die($stmt->error);
    $stmt->fetch() or die($stmt->error);
    $stmt->close();
    $image = ($status == -1) ? "fail" : "success";
    if (isset($vars) && !empty($vars)) {
        if (strpos($vars, ",")) {
            $vars = explode(",", $vars);
            foreach ($vars as $key => $var) {
                $this->filter($message, $var, <HERE MUST BE DEFINED VALUE>);
            }
        } else {
            $var = trim($vars);
            $this->filter($message, $var, <HERE MUST BE DEFINED VALUE>);
        }
    }
    $data = array(
        'status' => $status,
        'message' => $message
    );
}

protected function filter($content, $needle, $replacement) {
    return str_replace("%'.$needle.'%", $replacement, $content);
}

【问题讨论】:

  • 请更新您的问题,而不是发布几乎相同的问题。投票关闭此作为str_replace function issue 的副本,因为新的更好。

标签: php mysql mysqli prepared-statement


【解决方案1】:

如果我没听错你的问题。 这应该会有所帮助。

<?php
    define('TEST', 'abc');
    echo constant('TEST');

http://www.php.net/manual/en/function.constant.php

【讨论】:

    猜你喜欢
    • 2022-07-16
    • 2020-10-02
    • 2019-03-13
    • 1970-01-01
    • 1970-01-01
    • 2017-10-24
    • 2013-03-25
    • 2015-10-11
    • 1970-01-01
    相关资源
    最近更新 更多