где является фатальной ошибкой «Не удается получить доступ к пустому свойству» в функции класса PHP?

Что не так с этим кодом?

<?php class users { var $user_id, $f_name, $l_name, $db_host, $db_user, $db_name, $db_table; function users() { $this->$db_host = 'localhost'; $this->$db_user = 'root'; $this->$db_name = 'input_oop'; $this->$db_table = 'users'; } function userInput($f_name, $l_name) { $dbc = mysql_connect($this->db_host , $this->db_user, "") or die ("Cannot connect to database : " .mysql_error()); mysql_select_db($this->db_name) or die (mysql_error()); $query = "insert into $this->db_table values (NULL, \"$f_name\", \"$l_name\")"; $result = mysql_query($query); if(!$result) die (mysql_error()); $this->userID = mysql_insert_id(); mysql_close($dbc); $this->first_name = $f_name; $this->last_name = $l_name; } function userUpdate($new_f_name, $new_l_name) { $dbc = mysql_connect($this->db_host, $this->db_user, "") or die (mysql_error()); mysql_select_db($this->db_name) or die (mysql_error()); $query = "UPDATE $this->db_table set = \"$new_f_name\" , \"$new_l_name\" WHERE user_id = \"$this->user_id\""; $result = mysql_query($query); $this->f_name = $new_f_name; $this->l_name = $new_l_name; $this->user_id = $user_id; mysql_close($dbc); } function userDelete() { $dbc = mysql_connect($this->db_host, $this->db_user, "") or die (mysql_error()); mysql_select_db($this->db_name) or die (mysql_error()); $query = "DELETE FROM $this->db_table WHERE $user_id = \"$this->user_id\""; mysql_close($dbc); } } ?> 

Ошибка:

Неустранимая ошибка: не удается получить доступ к пустому свойству в C: \ xampp \ htdocs \ jordan_pagaduan \ class.php в строке 15.

Чтобы получить доступ к классу-классу внутри метода класса, вы должны использовать $this->propertyName , а не $this->$propertyName $this->propertyName $this->$propertyName .

Это означает, что ваш user_input() должен быть написан следующим образом:

 function user_input() { $this->db_host = 'localhost'; $this->db_user = 'root'; $this->db_name = 'input_oop'; $this->db_table = 'users'; } 

(возможно, вам придется сделать ту же самую модификацию в других местах)

С тем, что вы написали, $this->db_user никогда не устанавливается; и, позднее, при использовании этого:

 $dbc = mysql_connect($this->db_host , $this->db_user, "") 

$this->db_user имеет значение null; что означает, что mysql_connect будет использовать значение по умолчанию, которое, в вашем случае, представляется ODBC , судя по сообщению об ошибке.

(то же самое с другими свойствами), но я взял это в качестве примера, так как значение по умолчанию ODBC присутствовало в сообщении об ошибке, которое вы опубликовали: это был самый очевидный выбор.)