Это сводит меня с ума, и я надеюсь, что кто-то может помочь.Неопределенная ошибка переменной/пустой ошибки после доступа
Я изучаю PHP и как часть более крупного проекта, чтобы помочь мне отлаживать/регистрировать проблемы, поскольку они происходят. Я создал класс регистрации ошибок PHP.
Это моя ошибка:
This is a test
I hope it worked!
Success!
Notice: Undefined variable: errorLog in /Applications/MAMP/htdocs/errorlog.php on line 27
Fatal error: Cannot access empty property in /Applications/MAMP/htdocs/errorlog.php on line 27
Так что я могу видеть
Ошибка в строке 27 состоит из:
$outputStringForSQL = $conn->escape_string($this->$errorLog);
Я озадачен. Я не понимаю, как $errorLog
не определено, поскольку оно явно добавлено дважды с помощью метода append()
и считывается с использованием метода returnLog()
. Свойство $errorLog
явно не пусто, так как returnLog()
читает от него штраф. Я проверил, что $this->errorLog
не пуст, повторив его.
Я подумал, что, возможно, я неправильно понял объем, который задал $ erroLog публике, все равно ничего.
Здесь errorlog.php класс 'ErrorLog':
<?php
class errorlog{
protected $errorLog;
public function append($string){
$this->errorLog = $this->errorLog . $string . "<br />";
}
public function returnLog() {
echo $this->errorLog;
return "Success!";
}
public function commit(){
global $_mysqlUsername;
global $_mysqlPassword;
$servername = "localhost";
$dbname = "my_DB"; //production
// Create connection
$conn = new mysqli($servername, 'root', 'root', $dbname);
// Check connection
if ($conn->connect_error) {
die(error_log($conn->connect_error));
}
$outputStringForSQL = $conn->escape_string($this->$errorLog);
$sql = "INSERT INTO `tblDebugLog` (`ID`, `dateTime`, `debugData`) VALUES (NULL, CURRENT_TIMESTAMP, '$outputStringForSQL');";
if ($conn->query($sql) !== TRUE) {
echo("Error: " . $sql . "<br>" . $conn->error);
}
$conn->close();
return 'Success';
}
}
?>
Это сценарий использования класса 'ERRORLOG':
<?php
function __autoload($class){
require "$class.php";
}
$myError = new errorlog;
$myError->append('This is a test');
$myError->append('I hope it worked!');
echo $myError->returnLog();
echo $myError->commit();
?>
Может кто-нибудь пролить некоторый свет на эту ошибку ?
Большое спасибо.
Я знал, что я делаю что-то глупое! Спасибо!!!!!! – Craig