PHP MySQL-запросы и PHP-переменные - PullRequest
0 голосов
/ 29 мая 2010

Я пытаюсь создать систему входа в систему 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;
  }

Запрос возвращает false.

Ответы [ 2 ]

2 голосов
/ 29 мая 2010

Еще немного о причинах, по которым ваш код не работал: OO-синтаксис Php требует, чтобы вы использовали квалификатор для переменных экземпляра и класса. Другими словами, вы не можете пропустить «это», как в других языках.

Если ваш метод CheckLogin не является статическим, переменная $TBL_NAME все равно не будет установлена ​​внутри функции. Чтобы получить переменную экземпляра, вам нужно использовать $this->TBL_NAME.

Поскольку ваш метод является статическим, он имеет доступ к статическим переменным, но не к переменным экземпляра, поэтому вы должны сделать переменную статической. Как только вы это сделаете, вы можете получить к нему доступ с помощью self::, как в ответе Мо.

0 голосов
/ 29 мая 2010

Объявите $TBL_NAME как private static, а не просто private, и используйте self::$TBL_NAME. Не уверен в синтаксисе в строке - я бы просто использовал вместо этого оператор конкатенации (т. Е. "SELECT uid FROM " . self::$TBL_NAME . " WHERE …"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...