我现在遇到这个奇怪的问题,我只是在做一个小管理后端的事情,它允许用户上传文件并再次下载,简单的东西。
我正在使用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;
}
答案 0 :(得分:0)
mysql_real_escape_string需要连接。由于getRecentLinks
打开了连接,因此可以正常工作。但是你在runQuery
中getFileInfo
之前(按执行顺序)调用mysql_real_escape_string。在这种情况下,我假设id是一个整数,所以你打电话intval($_GET['id'])
会更好,也更便宜。