私は以下のこのコードについて質問があります。 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();
}
}
?>
Joshありがとう、私はこれを試してみる。しかし、私は2つではなく、1つのパラメータで動作するのだろうかと思っていた。私のDB接続($ mysqli)はconnection.phpファイルにあります編集:ジョシュ、まだグローバルな$ mysqliでこのエラーを取得します。 – Niels
@Niels: 'm_sHouseNumber'でエラーが発生している可能性が最も高いです。テストするには、 'echo $ this-> m_sHouseNumber;'を追加して、そのエラーが出ていないかどうか確認してください。そうであれば、おそらくあなたのクラスに明示的なプロパティーを持たないか、暗黙のものに何も割り当てようとしていないかのどちらかです。 – Josh
私は私の編集を参照して元の投稿の上に私のクラスでは、このプロパティを指定しました(私はこの記事でクラス全体を入れます) – Niels