Php 注意:变量似乎未初始化
出于某种原因,我在代码中收到了此通知 变量$conn似乎未初始化 我不明白为什么我会看到这个通知。我想我把我的Php 注意:变量似乎未初始化,php,Php,出于某种原因,我在代码中收到了此通知 变量$conn似乎未初始化 我不明白为什么我会看到这个通知。我想我把我的include放在了正确的位置 Class Calendar { public function show() { include './includes/dbconn.php'; include_once './includes/functions.php'; for ($i=0; $i<$weeksInMonth; $i++) {
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>";
}
}
}
my_class.php
如果您使用的是netbeans或phpstorm,那么这可能是IDE问题 检查和
但是,建议您向我们显示包含的文件以进行检查。因为变量是在dbconn.php中首次初始化的,所以IDE可能无法识别它。插入
$conn = null;
排队后
public function show() {
不要对变量使用includes或global,这很糟糕 相反,您应该使用类
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;
}
}
你在使用PHPStorm吗?我们不知道
/includes/functions.php
包含什么,所以没有合理的方法来猜测解决方案。@MahmoudTantawy-nop,netbeans@PeeHaa问题在/includes/dbconn.php中,而不是在/includes/functions中。php
看起来像是netbeans和phpstorm的问题,检查一下,他说“由于我没有收到任何php数据库错误,例如未连接到数据库或类似的错误,因此我假设我的连接是正确的。“看起来他在IDE中遇到了错误,当运行代码时,一切都很好,但不确定!该文件包含在调用它的作用域中。@PeeHaa完全正确,因为它是我的作用域,我想我不会有任何问题=/@ArielMaduro是什么给了你错误?这是当你运行php代码的时候还是IDE警告的时候?你有没有。。。。喜欢伊杜诺。。。。实际运行代码以检查是否只是IDE变得混乱,而不是代码中的实际错误?因为听起来@MahmoudTantawy几乎是有钱人。IDE可能不会检查变量是否在包含的文件中定义。因此,如果你在执行代码时没有收到警告,那就没有问题。虽然你是正确的,但这并没有以任何方式回答OP。@PeeHaa用这段代码他不会得到变量$conn似乎是未初始化的,就像你说的那样@PeeHaa我是正确的,如果我的回答帮助OP清除错误,那么我很高兴。不管你怎么想
public function show() {
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;
}
}
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();