PHP MySQL sorgunun ve PHP Değişkenler

2 Cevap php

Ben üzerinde çalışıyorum bir proje için bir OO Giriş sistemi yapmak için çalışıyorum ve sorgu dizeleri içine değişkenler ekleme ile sorun yaşıyorum. Ben gerçek tablo adı ile "$ tbl_name" yerine ise aşağıdaki kodda, çalışır. Neden $ tbl_name değerine çeviri $ tbl_name değil mi?

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;
  }

Sorgu false dönüyor.

2 Cevap

Sadece private, $TBL_NAME private static olarak bildirmek ve kullanımı self::$TBL_NAME. Bir dize içinde sözdizimi emin değil - Ben sadece yerine birleştirme operatörü kullanmak istiyorum (yani, "SELECT uid FROM " . self::$TBL_NAME . " WHERE …"

Sebep (ler) üzerinde biraz daha kod işe yaramadı: PHP'nin OO sözdizimi örneği ve sınıf değişkenleri üzerinde niteleyici gerektirir. Başka bir deyişle, diğer dillerde olduğu gibi 'bu' terk edemez.

Lütfen CheckLogin yöntem statik değilse, değişken $TBL_NAME hala işlevinin içinde ayarlanır olmaz. Örnek değişkeni almak için kullanmak zorunda $this->TBL_NAME.

Senin yöntem is, statik, statik değişkenlere erişimi değil örnek değişkenleri vardır, böylece değişken static yapmak zorunda beri. Bunu yaptığınızda, Mo cevap olarak, self:: ile erişebilirsiniz.