使用PHP类从数据库中检索信息

时间:2013-05-27 10:23:19

标签: php mysql

我正在尝试使用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 个答案:

答案 0 :(得分:0)

问题是双重的:

  1. 您的课程未被实例化,
  2. 您没有将$uid传递给getCredits()方法。
  3. 按原样保留您的班级定义,您可以这样做:

    在php页面上调用

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

    但是,我建议你重新设计你的类,用构造函数中的用户id实例化它,然后你的函数应该在查询中使用本地用户id param,而不是在方法级别要求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;
        }
    
    }
    

答案 1 :(得分:0)

have you created object of class `"User"` like this:

$User = new User();

答案 2 :(得分:-1)

在我看来,在没有班级实例的情况下调用成员函数并且还没有通过用户ID:

  

print $ User-&gt; getCredits();

除非你有一个与该类同名的变量$ User(有点令人困惑?)。那是你看到的问题吗?此外,您还缺少函数参数uid

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

答案 3 :(得分:-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) . '"