【问题标题】:PHP 4 Variable losing value on scope changePHP 4 变量在范围更改时失去价值
【发布时间】:2012-11-02 19:16:59
【问题描述】:
echo $uid; // RETURNS INTEGER VALUE

if (isset ( $_POST ['cashpaid'] )) {
    $queryfinal = "select * from " . $db_prefix . "customer_det
          where `id` = '$uid'"; // UID RETURNS NULL
....

我已经尝试了所有我能想到的全局变量和超级全局变量的组合。我无法将价值转移过来。 我从 MySQL 选择中提取 $uid 并将其分配给一个整数值。正如您在代码开头看到的那样,结束大括号是包含 $uid 值的 IF 语句的结尾。

如何在所有范围内为 $uid 分配相同的值?

这已经让我死了大约两天。如果这看起来很简单,我很抱歉,但它会让我发疯。我试过$GLOBALS['uid'] 无济于事。

【问题讨论】:

  • 如果您的代码完全按照您在问题中包含的方式显示,则回显 $uid 的时间和附加到查询的时间之间的范围没有区别。
  • @Vulcan,也没有“结束花括号”。我相信他只是忘记粘贴了。
  • 不,我有一个结尾的花括号,但一个 mod 把它删掉了

标签: php mysql forms scope php4


【解决方案1】:

您可以尝试使用在全局范围内声明一次的 setter/getter 函数,但它除了访问 GLOBALS 之外并没有做更多的事情。

function globalUid($value = False)
{
    GLOBAL $__uid;
    if (!isset($__uid))
        $__uid = False;
    if (False === $value)
        return $__uid;
    $__uid = $value;
}

然后,不要回显$uid,而是尝试globalUid($uid),然后再尝试$saved_uid = globalUid();

但我认为这两个作用域可能在两个不同的调用中执行,因此您可能需要将 UID 保存在 session 变量中。

【讨论】:

    猜你喜欢
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-10
    • 2014-05-08
    相关资源
    最近更新 更多