0

我正在尝试使用 PHP 类从我的表中获取信息,但它不起作用

请注意,我知道我正在使用mysql_*函数。

调用php页面

print $User->getCredits(); 

班级

require 'dbconfig.php';

class User {

    public function getCredits($uid)
    {
        echo 'asda';
        $rs = mysql_query("SELECT credits FROM `users` WHERE oauth_uid = '$uid'");
        $row=mysql_fetch_object($rs);
        return $row->credits;
    }

}
4

4 回答 4

0

问题有两个方面:

  1. 你的类没有被实例化,并且
  2. 您没有将您的方法传递$uid给该getCredits()方法。

保持您的 Class 定义不变,您可以这样做:

调用php页面

$uid = 1;
$user = new User();
print $user->getCredits($uid);

但是,我建议您重新设计您的类以在构造函数中使用用户 id 对其进行实例化,然后您的函数应在查询中使用本地用户 id 参数,而不是在方法级别要求 uid。试试这个:

调用php页面

$uid = 1;
$user = new User($uid);
print $user->getCredits(); 

班级

require 'dbconfig.php';

class User {

    private $_uid;

    public function __construct($uid) {
        $this->_uid = $uid;
    }

    public function getCredits()
    {
        echo 'asda';
        $sql = "SELECT `credits` 
                FROM `users` 
                WHERE `oauth_uid` = '{$this->_uid}'";
        $rs = mysql_query($sql);
        $row = mysql_fetch_object($rs);
        return $row->credits;
    }

}
于 2013-05-27T10:30:40.430 回答
0
have you created object of class `"User"` like this:

$User = new User();
于 2013-05-27T10:31:08.523 回答
-1

在我看来,您正在调用一个没有类实例的成员函数,也没有传递用户 ID:

打印 $User->getCredits();

除非你有一个与类同名的变量 $User (有点混乱?)。这是你看到的问题吗?你也缺少函数参数uid

如果您将其定义为静态函数,则可以执行User::getCredits($uid). 要么创建类的实例$thisUser = new User(...); $thisUser->getCredits(...)......

于 2013-05-27T10:27:33.997 回答
-1
// Insert code her to connect to db (mysql_connect / mysql_pconnect if you use the mysql -family ; but you should really switch to be using mysqli_*, which is mostly the same, but it's newer and might use mysqlnd php native driver for better performance)
$user = new User();
echo $user->getCredits();

此外,您应该添加错误检查 (mysql_error()) 并转义 $uid(如果它只能是 int,则可以使用 intval,但通用的解决方案是使用 mysql_real_escape_string)

如果您使用反引号,则应始终如一地使用它们,例如:

"SELECT `credits` FROM `users` WHERE `oauth_uid` = '" . mysql_real_escape_string($uid) . '"
于 2013-05-27T10:29:01.620 回答