PHP mySQL查询和PHP变量

时间:2010-05-29 19:01:59

标签: php mysql variables

我正在尝试为我正在处理的项目创建OO登录系统,并且在将变量插入查询字符串时遇到问题。在下面的代码中,如果我将“$ TBL_NAME”替换为实际的表名,则可以使用。为什么$ TBL_NAME没有转化为$ TBL_NAME的价值?

class UserDB {

  private $TBL_NAME = "users";

  public static function CheckLogin($username, $password) {

    Database::Connect();

    $username = stripslashes($username);
    $password = stripslashes($password);
    $username = mysql_real_escape_string($username);
    $password = mysql_real_escape_string($password);

    $sql="SELECT uid FROM $TBL_NAME WHERE username='$username' AND password='$password' ";
    $result =mysql_query($sql);
    $count=mysql_num_rows($result);
    if ($count==1)
      return true;
    else
      return false;
  }

Query返回false。

2 个答案:

答案 0 :(得分:2)

更多关于你的代码不起作用的原因:Php的OO语法要求你在实例和类变量上使用限定符。换句话说,你不能像其他语言一样遗漏“这个”。

如果您的CheckLogin方法不是静态的,则变量$TBL_NAME仍然不会在函数内设置。要获取实例变量,您必须使用$this->TBL_NAME

由于您的方法 是静态的,因此它可以访问静态变量而不是实例变量,因此您必须将变量设置为static。完成后,您可以使用self::访问它,就像Mo的回答一样。

答案 1 :(得分:-1)

$TBL_NAME声明为private static,而不只是private,并使用self::$TBL_NAME。不确定字符串中的语法 - 我只是使用连接运算符(即"SELECT uid FROM " . self::$TBL_NAME . " WHERE …"