Jor*_*rge 3 php class function
这段代码有什么问题?
<?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);
}
}
?>
Run Code Online (Sandbox Code Playgroud)
错误是:
致命错误:无法访问第15行的C:\ xampp\htdocs\jordan_pagaduan\class.php中的空属性.
Pas*_*TIN 14
要从类的方法内部访问类属性,必须使用$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';
}
Run Code Online (Sandbox Code Playgroud)
(您可能需要对其他地方进行相同的修改)
你所写的,$this->db_user永远不会被设定; 以及以后使用时:
$dbc = mysql_connect($this->db_host , $this->db_user, "")
Run Code Online (Sandbox Code Playgroud)
$this->db_user一片空白 ; 这意味着mysql_connect将使用默认值 - 在您的情况下,似乎是ODBC从错误消息判断.
(与其他属性相同 - 但我以此为例,因为ODBC您发布的错误消息中存在默认值:这是最明显的选择.)