-1

PHP で PDO を使用しています ... 次の問題があります。

次のコードは機能しません。

class A {
 private $getUsersQuery = "SELECT * FROM users";      
 ...
 public function getUsers() {       
   $DBH = A::getDatabaseConnection();           
   try {
      $query = $DBH->prepare($this->getUsersQuery); 
      ...
   } catch(PDOException $e) {}
 }
}

しかし、文字列を使用すると機能します。

$DBH->prepare("SELECT * FROM users"); 

prepare() の外でエコーを使用しても動作します...

echo $this->getUsersQuery;   // Outputs the sql string.

誰かが問題の可能性を指摘できますか。

アップデート :

エラー :

SQLSTATE[42000]: 構文エラーまたはアクセス違反: 1065 クエリが空でした

ありがとう

4

2 に答える 2

4

コメントで述べたように、静的ではないメソッドに対して静的呼び出しを行います。

$thisこのように呼び出されるメソッドで使用しても意味がありません。

$results = A::getUsers();

クラスをインスタンス化してから、クラス オブジェクトでメソッドを呼び出します。

$a = new A();
$a->getUsers();

または、メソッドと SQL クエリを静的にします。

于 2012-11-17T22:45:09.763 に答える
0

試す

$a = new A();
$result = $a->getUsers();

A::getUsers() を呼び出したときに、$getUsersQuery の値が初期化されていない可能性があります。静的メソッドはそのように呼び出されます。

于 2012-11-17T22:45:04.893 に答える