ölümcül hata nerede "boş özelliğine erişilemiyor"

1 Cevap php

Ne bu kod ile yanlış?

<?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);
  } 
  }
?>

The error is:
Fatal error: Cannot access empty property in C:\xampp\htdocs\jordan_pagaduan\class.php on line 15.

1 Cevap

Bir sınıfın bir yöntem içinde bir class-property erişmek için, $this->propertyName kullanmanız gerekir, ve $this->$propertyName.

Hangisi user_input() yöntemi şu şekilde yazılmalıdır anlamı:

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 null; hangi gelir mysql_connect will use the default value - Senin durumunda, hata mesajı bakılırsa, ODBC gibi görünen,.

(same thing with the other properties -- but I took this one as an example, as the ODBC varsayılan değer deftere hata iletisinde mevcuttu:. Bunun en bariz bir seçim oldu)