除非调用另一个函数,否则PHP OOP函数不会获取数据

时间:2011-05-19 20:26:42

标签: php oop

我现在遇到这个奇怪的问题,我只是在做一个小管理后端的事情,它允许用户上传文件并再次下载,简单的东西。

我正在使用PHP OOP和类和函数。还是很新的。目前在一个页面上,我有一个“getRecentLinks”函数,它将调用几个表中的信息并将其全部放在页面的表格中,它可以正常工作。此页面上的选项之一是下载上载到该单独行的文件。所以我只想让它成为你点击的链接说,file-download.php?id = 3.

现在在file-download.php上我正在测试在我添加标题和内容之前获取页面上的信息。所以我只有一个简单的

$l = new Links();
$file = $l->getFileInfo($_GET['id']);
print_r($file);

这应该只返回数据库,id,文件名,大小,数据和mimetype的信息。

现在这不起作用。我不知道为什么,但事实并非如此。

现在在我的页面上,我有getRecentLinks()函数,它工作得很好。我甚至将getRecentLinks()引入我的file-download.php页面,所以它的设置就像这样。

$l = new Links();
$l->getRecentLinks();
$file = $l->getFileInfo($_GET['id']);
print_r($file);

这个工作得很好,花花公子,第二个我删除getRecentLinks()它停止从getFileInfo()调用信息,我无法搞清楚。我的意思是,我可以保留#l-> getRecentLinks()并不是一件大事,但是如果我必须将它添加到我想要做的每一个页面,我可以看到这很烦人,我只是刚刚开始这个项目。

这是Links类

中的代码
public function getFileInfo($id)
{
    $result = $this->runQuery("SELECT * FROM file WHERE id ='".mysql_real_escape_string($id)."'");

    $resultSet = $this->fetch($result);

    return $resultSet;
}

public function getRecentLinks()
{
    $result = $this->runQuery("SELECT * FROM links ORDER BY date DESC");

    while($j = $this->fetch($result))
    {
        $resultSet[] = $j;
    }

    return $resultSet;
}

继承我朋友帮助我发展的关系和获取功能

public function runQuery($sql) {
    $this->connection = mysql_connect($this->dbhost, $this->dbuser, $this->dbpass);
    if(!$this->connection) {
        die("MySQL is down.");
    } else {
        mysql_select_db($this->dbname);
    }
    $result = mysql_query($sql,$this->connection) or die(mysql_error());

    return $result;
}

public function fetch($result)
{
    $resultSet = mysql_fetch_assoc($result);

    return $resultSet;
}

1 个答案:

答案 0 :(得分:0)

mysql_real_escape_string需要连接。由于getRecentLinks打开了连接,因此可以正常工作。但是你在runQuerygetFileInfo之前(按执行顺序)调用mysql_real_escape_string。在这种情况下,我假设id是一个整数,所以你打电话intval($_GET['id'])会更好,也更便宜。