2012-05-04 13 views
0

私は以下のこのコードについて質問があります。 1つのアイテム(この場合は通り)を選択したい場合、デバッグモードではすべてエラーなしで動作します。 /アプリケーション非オブジェクトのプロパティを取得しようとすると/:私は私の選択クエリにパラメータを追加したい場合はMAMPの非オブジェクトのプロパティを取得しようとしています

public function placeAvailable() 
    { 
     //open connectie naar database 
     include("Connection.php"); 

     $sSql= "select Street from tblPlaces 
       where Street = '".$this->m_sStreet."'"; 

     $vResult=$mysqli->query($sSql); 
     if($vResult->num_rows>0) 
     { 
      return(false); 
     } 
     else 
     { 
      return(true); 
     } 
     $mysqli->close(); 
    } 

(私がメッセージを生成するために、AJAXを使用しています)私はエラー(お知らせを得ましたライン86上のMAMP/htdocsに/ foodsquare /資産/クラス/ places.class.php)

$vResult=$mysqli->query($sSql); 
     if($vResult->num_rows>0) 

は、私が追加、余分なパラメータがfolowingです。

$sSql= "select Street from tblPlaces 
       where Street = '".$this->m_sStreet."' AND where HouseNumber = '".$this->m_sHouseNumber."'"; 

ジョシュあなたはあなたが$mysqliを定義することはありません全体のコード

<?php 

class Places { 

    private $m_sName; 
    private $m_sStreet; 
    private $m_sHouseNumber; 
    private $m_sCity; 
    private $m_sCategory; 

    public function __set($p_sProperty, $p_vValue) { 
     switch($p_sProperty) { 
      case "Name" : 
       $this -> m_sName = $p_vValue; 
       break; 
      case "Street" : 
       $this -> m_sStreet = $p_vValue; 
       break; 
      case "HouseNumber" : 
       $this -> m_sHouseNumber= $p_vValue; 
       break; 
      case "City" : 
       $this -> m_sCity = $p_vValue; 
       break; 
      case "Category" : 
       $this -> m_sCategory = $p_vValue; 
       break; 
     } 
    } 

    public function __get($p_sProperty) { 
     $vResult = null; 
     switch($p_sProperty) { 
      case "Name" : 
       $vResult = $this -> m_sName; 
       break; 
      case "Street" : 
       $vResult = $this -> m_sStreet; 
       break; 
      case "HouseNumber" : 
       $vResult = $this -> m_sHouseNumber; 
       break; 
      case "City" : 
       $vResult = $this -> m_sCity; 
       break; 
      case "Category" : 
       $vResult = $this -> m_sCategory; 
       break; 
     } 
     return $vResult; 
    } 

    public function addPlaces() 
    { 
     include_once("connection.php"); 
      $sSql = "INSERT INTO tblPlaces 
       (Name, 
       Street, 
       HouseNumber, 
       City, 
       Category) 
       VALUES 
       ('" . $mysqli -> real_escape_string($this -> m_sName) . "', 
       '" . $mysqli -> real_escape_string($this -> m_sStreet) . "', 
       '" . $mysqli -> real_escape_string($this -> m_sHouseNumber) . "', 
       '" . $mysqli -> real_escape_string($this -> m_sCity) . "', 
       '" . $mysqli -> real_escape_string($this -> m_sCategory) . "');"; 

     if (!$mysqli -> query($sSql)) 
     { 
      throw new Exception("Er is iets mis gelopen bij het toevoegen van een plaats"); 
     } 

    } 

    public function placeAvailable() 
    { 
     //open connectie naar database 
     include("Connection.php"); 
     global $mysqli; 


     //sql query selecteert straat uit tblplaces waar de straat gelijk is aan het inputveld street uit het formulier 
     $sSql= "select Street from tblPlaces 
       where Street = '".$this->m_sStreet."' AND where HouseNumber = '".$this->m_sHouseNumber."'"; 

     $vResult=$mysqli->query($sSql); 
     if($vResult->num_rows>0) 
     { 
      //Street (place) is al in gebruik 
      return(false); 
     } 
     else 
     { 
      //Hij is nog niet in gebruik 
      return(true); 
     } 
     //database sluiten 
     $mysqli->close(); 
    } 
} 
?> 

答えて

0

を見ることができ、ここで、あなたは接続を作成する必要があります。あなたには、

global $mysqli;

した後、しかし、あなたのクエリの前に:それはあなたConnection.phpになら

は、あなたが追加する必要があります。

エラーは、$mysqliがオブジェクトではなく、このようなプロパティを持たず、プロパティがquery($data)であることを意味します。

+0

Joshありがとう、私はこれを試してみる。しかし、私は2つではなく、1つのパラメータで動作するのだろうかと思っていた。私のDB接続($ mysqli)はconnection.phpファイルにあります編集:ジョシュ、まだグローバルな$ mysqliでこのエラーを取得します。 – Niels

+0

@Niels: 'm_sHouseNumber'でエラーが発生している可能性が最も高いです。テストするには、 'echo $ this-> m_sHouseNumber;'を追加して、そのエラーが出ていないかどうか確認してください。そうであれば、おそらくあなたのクラスに明示的なプロパティーを持たないか、暗黙のものに何も割り当てようとしていないかのどちらかです。 – Josh

+0

私は私の編集を参照して元の投稿の上に私のクラスでは、このプロパティを指定しました(私はこの記事でクラス全体を入れます) – Niels

関連する問題