Что не так с этим кодом?
<?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
присутствовало в сообщении об ошибке, которое вы опубликовали: это был самый очевидный выбор.)