where is the fatal error "Cannot access empty property" in the PHP class function?
What is wrong with this code?
<?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_开发者_如何学JAVAselect_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);
}
}
?>
The error is:
Fatal error: Cannot access empty property in C:\xampp\htdocs\jordan_pagaduan\class.php on line 15.
To access a class-property from inside a method of a class, you must use $this->propertyName
, and not $this->$propertyName
.
Which means your user_input()
method should be written like this :
function user_input() {
$this->db_host = 'localhost';
$this->db_user = 'root';
$this->db_name = 'input_oop';
$this->db_table = 'users';
}
(you might have to do the same modification to other places)
With what you have written, $this->db_user
is never set ; and, later, when using this :
$dbc = mysql_connect($this->db_host , $this->db_user, "")
$this->db_user
is null ; which means mysql_connect
will use the default value -- which, in your case, appears to be ODBC
, judging from the error message.
(same thing with the other properties -- but I took this one as an example, as the ODBC
default-value was present in the error message you posted : it was the most obvious choice.)
精彩评论