2016-01-21 97 views
0

由於某種原因,我在我的代碼中收到此通知。通知:變量似乎未初始化

變量$康恩似乎未初始化

我不明白爲什麼我看到這個通知。我想我會在正確的地方加入我的include

Class Calendar { 
    public function show() { 
    include './includes/dbconn.php'; 
    include_once './includes/functions.php'; 

    for($i=0; $i<$weeksInMonth; $i++){ 
     //Create days in a week 
     for($j=1;$j<=7;$j++){ 

     $cal_date = (string)$this->currentDate; 
     $tutor_date = display_tutor_schedule($conn,$cal_date); 

     if(isset($tutor_date[$j]['date'])){ 
      $content.=$this->_showDay($i*7+$j, $tutor_date[$j]['date']); 
     }else { 
      $content.=$this->_showDay($i*7+$j, 0); 
     } 
    } 

    $content .="</tr>"; 
    } 

    } 

} 

$conn變量從include './includes/dbconn.php';到來。由於我沒有收到任何PHP數據庫錯誤,例如「未連接到數據庫」或類似的東西,我認爲我的連接是正確的。

的functions.php

function display_tutor_schedule($conn,$tutor_date){ 

$query = "select * from [dbo].[TUTOR_SCHEDULE] " 
     . "LEFT JOIN [dbo].[TUTOR] " 
     . "ON [dbo].[TUTOR_SCHEDULE].tutor_id = [dbo].[TUTOR].tutor_id " 
     . "LEFT JOIN [dbo].[STATUS] " 
     . "ON [dbo].[STATUS].status_id = [dbo].[TUTOR_SCHEDULE].status_id " 
     . "WHERE [dbo].[TUTOR_SCHEDULE].date = '$tutor_date' " ; 

$stmt = sqlsrv_query($conn,$query); 

$i = 0; 
$appt_detail = array(); 
while ($row = sqlsrv_fetch_array($stmt)){ 
    $appt_detail[$i]['date'] = $row['date']; 
    $appt_detail[$i]['t_shedule_id'] = $row['t_shedule_id']; 
    $appt_detail[$i]['start_time'] = $row['start_time']; 
    $appt_detail[$i]['end_time'] = $row['end_time']; 
    $appt_detail[$i]['tutor_fname'] = $row['tutor_fname']; 
    $appt_detail[$i]['tutor_lname'] = $row['tutor_lname']; 
    $appt_detail[$i]['status_name'] = $row['status_name']; 
    $appt_detail[$i]['status_id'] = $row['status_id']; 

    $i++; 
} 




return $appt_detail; 

} 

my_class.php

<?php 

$calendar = new Calendar(); 
echo $calendar->show(); 

?> 

dbconn.php

$serverName = "myserver"; 
$connectionInfo = array("Database" => "my_database", "UID" => "user", "PWD" => "pwd"); 
$conn = sqlsrv_connect($serverName, $connectionInfo); 
+0

是否使用PHPStorm? –

+1

我們不知道'/ includes/functions.php'包含了什麼,所以沒有一種理智的方法來猜測解決方案。 – PeeHaa

+0

@MahmoudTantawy nop,netbeans –

回答

0

如果你是使用netbeans或phpstorm,那麼這可能是IDE問題。

檢查https://netbeans.org/projects/php/lists/users/archive/2013-03/message/49phpstorm warning php variable might not have been defined

然而,這是可取的,你告訴我們,你包括檢查其中的文件。

+0

等待wut? OP甚至沒有運行代碼? – PeeHaa

+0

他說:「由於我沒有得到任何php數據庫錯誤,如未連接到數據庫或類似的東西,我認爲我的連接是正確的。」 –

+1

看起來他在IDE中遇到錯誤,並且在運行代碼時一切正常,但不確定! –

-2

由於變量首先在dbconn.php中初始化,因此IDE可能無法識別它。插入

$conn = null; 

public function show() { 
+0

該文件包含在調用的範圍內。 – PeeHaa

+0

@PeeHaa準確地說,因爲它是我的範圍我雖然我不會有任何問題=/ –

+0

@ArielMaduro什麼給你錯誤?當你運行php代碼還是它是一個IDE警告? – PeeHaa

-2

不要使用後,包括或全局您的變量,這是不好的。

相反,你應該使用類

class Database { 

    private $conn; 

    public function __construct(){ 
     $serverName = "myserver"; 
     $connectionInfo = array("Database" => "my_database", 
           "UID" => "user", 
           "PWD" => "pwd"); 
     $this->conn = sqlsrv_connect($serverName, $connectionInfo); 
    } 

    public function get_connection(){ 
     return $this->conn; 
    } 
} 

Calendar.php

class Calendar 
{ 
    private $conn; 
    public $weeksInMonth; 

    function __construct($conn){ 
     $this->conn = $conn; 
    } 


    public function show() 
    { 
     $content = ""; 
     for ($i = 0; $i < $this->weeksInMonth; $i++) { 
      //Create days in a week 
      for ($j = 1; $j <= 7; $j++) { 
       $cal_date = (string)$this->currentDate; 
       $tutor_date = display_tutor_schedule($cal_date); 

       if (isset($tutor_date[$j]['date'])) { 
        $content .= $this->_showDay($i * 7 + $j, $tutor_date[$j]['date']); 
       } else { 
        $content .= $this->_showDay($i * 7 + $j, 0); 
       } 
      } 
      $content .= "</tr>"; 
     } 
     return $content; 
    } 

    function display_tutor_schedule($tutor_date) 
    { 
     $query = "select * from [dbo].[TUTOR_SCHEDULE] " 
      . "LEFT JOIN [dbo].[TUTOR] " 
      . "ON [dbo].[TUTOR_SCHEDULE].tutor_id = [dbo].[TUTOR].tutor_id " 
      . "LEFT JOIN [dbo].[STATUS] " 
      . "ON [dbo].[STATUS].status_id = [dbo].[TUTOR_SCHEDULE].status_id " 
      . "WHERE [dbo].[TUTOR_SCHEDULE].date = '$tutor_date' "; 

     $stmt = sqlsrv_query($this->conn, $query); 

     $appt_detail = array(); 
     while ($row = sqlsrv_fetch_array($stmt)) { 
      $appt_detail[] = $row; 
     } 
     return $appt_detail; 
    } 

} 

使用

$db = new Database(); 
$conn = $db->get_connection(); 
$calendar = new Calendar($conn); 
$calendar->weeksInMonth = 4; 
echo $calendar->show(); 
+0

雖然你是正確的,但這並不以任何方式實際回答OP。 – PeeHaa

+0

@PeeHaa用這段代碼他不會得到'變量$ conn似乎是未初始化的' – meda

+0

用代碼'<?php echo'yay';'他也不會得到錯誤。仍然不回答OP。 – PeeHaa