【问题标题】:Returning a value from an SQL Method从 SQL 方法返回值
【发布时间】:2014-07-10 12:36:19
【问题描述】:

]我完全不知道为什么下面的代码不返回值。我有 2 个相互关联的 sql 表。在一个类中,我有以下方法,并且在该方法的范围内一切都很好。 var 转储显示正确的数据。 class.php 中说明了以下代码。

public function getId($username, $password) {
    if (isset($_SESSION['username'])) {
        $sql = "SELECT person_id FROM user WHERE username = ?";
        $stmt = $this->dbh->prepare($sql);
        $stmt->bindParam(1, $_SESSION['username']);
        $stmt->execute();
        $id = $stmt->fetch(PDO::FETCH_NUM);
        $id = $id[0];
    }
    ELSE {
        echo "Failed to retreive person_id";
    }
    var_dump($id);
    return $id[0];
}

但是,当我将该值返回给作为主文档的 showinfo.php 并声明以下内容时:

$user_id = $id[0];
var_dump($user_id);

然后 var 转储回显“NULL”。我需要它用于同样在 class.php 中的以下方法。

public function showInfo($user_id) {
    $sql = "SELECT * FROM person WHERE person_id = ?";
    $stmt = $this->dbh->prepare($sql);
    $stmt->bindParam(1, $user_id);
    $stmt->execute();
    $result = $stmt->fetch(PDO::FETCH_ASSOC);
    foreach ($result as $row) {
    echo "<pre>".print_r  ($row, true)."</pre>";
    }
}

谁能告诉我如何完成这项工作? 非常感谢您花时间和精力帮助我。

【问题讨论】:

    标签: php sql class include extends


    【解决方案1】:

    我猜你正在尝试访问索引为 [0] 的字段两次。

    也许尝试只返回 $id 然后访问外部类上的[0]

    【讨论】:

    • 你能提供你的 var_dump 的结果吗?
    • 确定:array(1) { [0]=> string(1) "1" }
    • $id = $id; 是干什么用的?
    • 哦没有复制粘贴应该是$id = $id[0];
    【解决方案2】:

    我的 PHP 有点生疏了,我现在无法进行测试,但是您不需要在问号周围加上单引号,以便它转到 SQL 引用吗?

    $sql = "SELECT * FROM person WHERE person_id = '?'";
    

    $stmt->bindParam(1, "'" + $_SESSION['username'] + "'");
    

    (但不是两者都有!)

    以便 SQL 看到 SELECT * FROM person WHERE person_id = 'MyVal'

    而不是 SELECT * FROM person WHERE person_id = MyVal

    它将解释为列名

    【讨论】:

    • 不,这不是必需的,在方法的范围内返回的值是正确的,我似乎无法将它超出本地范围。
    【解决方案3】:

    您没有显示调用该方法的位置。

    你在 showinfo.php 中试过这个:

    $user_id = $id[0];
    

    这不应该是……

    $user_id = getId('someusername', 'somepassword')
    

    或者类似的东西?抱歉,这不是答案,但我无法发表评论。

    【讨论】:

    • 我不确定,但我只是测试了它,它不会工作,事实上它破坏了整个页面:P
    猜你喜欢
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 2013-02-12
    相关资源
    最近更新 更多