PHP连接类和执行标量问题

PHP连接类和执行标量问题,php,visual-studio,class,visual-studio-2012,Php,Visual Studio,Class,Visual Studio 2012,我正在尝试编写一个PHP连接类,以便在应用程序中轻松重用 目前我正在使用executescalar命令 我需要返回一列和一行 这是我到目前为止所拥有的。是的,我知道凭证应该在外部文件中 我发现了一些错误: [08-Apr-2015 08:12:38 America/Los_Angeles] PHP Notice: Undefined offset: 0 in C:\Users\mhano00\Documents\Visual Studio 2012\PHPWebProject1\PHPWebP

我正在尝试编写一个PHP连接类,以便在应用程序中轻松重用

目前我正在使用executescalar命令

我需要返回一列和一行

这是我到目前为止所拥有的。是的,我知道凭证应该在外部文件中

我发现了一些错误:

[08-Apr-2015 08:12:38 America/Los_Angeles] PHP Notice:  Undefined offset: 0 in C:\Users\mhano00\Documents\Visual Studio 2012\PHPWebProject1\PHPWebProject1\includes\ConnectionClass.php on line 54
[08-Apr-2015 08:12:38 America/Los_Angeles] PHP Stack trace:
[08-Apr-2015 08:12:38 America/Los_Angeles] PHP   1. {main}() C:\U sers\mhano00\Documents\Visual Studio 2012\PHPWebProject1\PHPWebProject1\index.php:0
[08-Apr-2015 08:12:38 America/Los_Angeles] PHP   2. ConnectionClass->ExecuteScalar() C:\Users\mhano00\Documents\Visual Studio 2012\PHPWebProject1\PHPWebProject1\index.php:35
[08-Apr-2015 08:12:38 America/Los_Angeles] PHP Fatal error:  Cannot access private property ConnectionClass::$stmt in C:\Users\mhano00\Documents\Visual Studio 2012\PHPWebProject1\PHPWebProject1\index.php on line 57
[08-Apr-2015 08:12:38 America/Los_Angeles] PHP Stack trace:
[08-Apr-2015 08:12:38 America/Los_Angeles] PHP   1. {main}() C:\Users\mhano00\Documents\Visual Studio 2012\PHPWebProject1\PHPWebProject1\index.php:0.".
这是连接类

 class ConnectionClass
{

private $serverName; 
private $connectionInfo;
public $conn;
private $sql;
private $Result;
private $Rows;
private $stmt;
public function __construct()
{
             $this->serverName = "XXX.XXX.XX.XX";
     $this->connectionInfo = array( "Database"=>"XXXXX", "UID"=>"XXXXXX", "PWD"=>"XXXXXX");
     $this->conn  = sqlsrv_connect ($this->serverName, $this->connectionInfo);
     if(!$this->conn === true) 
     {
        //catches error on no connection to database, send auto email error
         echo "Connection could not be established.<br />";
      die( print_r( sqlsrv_errors(), true));
     }

}



    //may have to create a dataset within this class to be able to return each type of result.

     public function ExecuteScalar($IncomingSql)
    {
        //select scalar, one cell value is returned
         $this->sql = $IncomingSql;
         $this->stmt = sqlsrv_query( $this->conn, $IncomingSql);


        if ($this->stmt)
        {
            $this->Rows = sqlsrv_has_rows($this->stmt);
            if ($this->Rows)
            {
             $row = sqlsrv_fetch_array( $this->stmt, SQLSRV_FETCH_ASSOC);

               return  $this->Result = $this->row[0];
            }
        }

    }

    public function CreateDataSet($sql)
    {
    //create Dataset, araay is returned
    //can be called by this class or from outside to create a dataset array and return it
    $this->sql = $incomingsql;

    $stmt = sqlsrv_query( $conn, $sql);
         if ($stmt)
        {
    //return array

        }

    }

    public function SetServer($NewServer)
    {
        $this->serverName = $NewServer;
    }
    public function GetServer()
    {
        return $this->serverName;
    }
 }        
    die( print_r( sqlsrv_errors(), true));
     }

   }



    //may have to create a dataset within this class to be able to return each type of result.

    public function ExecuteScalar($IncomingSql)
    {
        //select scalar, one cell value is returned
         $this->sql = $IncomingSql;
         $stmt = sqlsrv_query( $this->conn, $IncomingSql);


        if ($this->stmt)
        {
            $Rows = sqlsrv_has_rows($this->stmt);
            if ($this->Rows)
            {
             $row = sqlsrv_fetch_array( $this->stmt, SQLSRV_FETCH_ASSOC);

                $this->Result = $this->row[0];
            }
        }            
    }


    public function SetServer($NewServer)
    {
        $this->serverName = $NewServer;
    }
    public function GetServer()
    {
        return $this->serverName;
    }


 }

您的方法
ExecuteScalar
位于
$conn2
中,但不在
$conn
中。您现在遇到的是另一个错误,而不是
“调用非对象的未定义方法…”
是…PHP致命错误:无法访问私有属性ConnectionClass:$stmt。但我不明白为什么。从我看来,代码看起来不错。可能是您在类外调用了
$stmt
属性。在方法
ExecuteScalar
$conn2 = new ConnectionClass;
$conn = $conn2->conn;
$car = $conn2->ExecuteScalar('Select * from store');