2016-03-30 20 views
0

Ben php ile temel bir kullanıcı manipülasyon sistemi üzerinde çalışıyorum, ancak dbconnect bağlantı ve ondan bağlantı değişkeni alamıyorum. İşte Dbconenct.php eklenemiyor

benim kodudur:?

dbconnect.php

<?php 
$con = mysqli_connect("localhost","root","","realestatecompany"); 
if(!$con) { 
echo "Error"; 
} 
//$con->close(); 
?> 

objects.php

<?php 
require_once 'dbconnector.php'; 
class userAccount { 
    public $userName; 
    public $userPass; 
    public $userType; 
     public function __construct ($UserName, $Password, $Type, $con) { 
     $this->userName = $UserName; 
     $this->userPass = $Password; 
     $this->userType = $Type; 
    } 
    public function writeInDB() { 
     $sql = "INSERT INTO login (userName,userPass,userType) values (".$this->userName.",".$this->userPass.",".$this->userType.")"; 
     if ($con->query($sql) === TRUE) { 
      echo "Record Added successfully"; 
     } else { 
      echo "Error Adding record: " . $conn->error; 
     } 
    } 
    public function editInDB($userNewAccount, $userID) { 
     $a = $userNewAccount->userName; 
     $b = $userNewAccount->userPass; 
     $c = $userNewAccount->userType; 
     $sql = "UPDATE login SET userName =".$a.", userPass ='".$b."', userType =".$c." WHERE userID =".$userID; 
     echo $sql; 
    } 
} 
$x = new userAccount("Heba", "Taba3", 1, $con); 
$x->writeInDB(); 

>

Çıktı

Notice: Undefined variable: con in D:\xampp\htdocs\swproject\objects.php on line 14 

Fatal error: Uncaught Error: Call to a member function query() on unknown in D:\xampp\htdocs\swproject\objects.php:14 Stack trace: #0 D:\xampp\htdocs\swproject\objects.php(29): userAccount->writeInDB() #1 {main} thrown in D:\xampp\htdocs\swproject\objects.php on line 14 

Herhangi bir yardım?

+3

'dbconnect bir propery olarak kullanmak değildi $con parametreyi kaydetmek unuttuğunu değişken kapsamı ve aynı zamanda. php 've 'dbconnector.php' iki farklı şeydir ... – arkascha

+0

' require_once 'dbconnect.php'; 'require_once 'dbconnector.php';' '' –

+1

Bunun yerine, betiklerinizdeki değişken kapsamı dikkate almadınız. "$ con" işlevlerinizde, fonksiyonun kapsamına yerel bir _local_ değişkeni, ayarlanabilecek veya ayarlanamayan global bir değişkene başvurmaz. Değişkenleri işlevler için bir çağrı argümanı olarak ele geçirerek enjekte etmeniz ya da 'global' (_very_ çirkin ve güvensiz) olarak bildirmeniz gerekir. – arkascha

cevap

1

Sorununuz size sınıfının bir özelliği olarak __contruct() geçmek ve sınıfın

<?php 

require_once 'dbconnector.php'; //<-- should this be 'dbconnect.php` 

class userAccount { 
    public $userName; 
    public $userPass; 
    public $userType; 

    public $con; 

    public function __construct ($UserName, $Password, $Type, $con) { 
     $this->userName = $UserName; 
     $this->userPass = $Password; 
     $this->userType = $Type; 
     $this->con  = $con; 
    } 

    public function writeInDB() { 
     $sql = "INSERT INTO login 
        (userName,userPass,userType) 
       values (".$this->userName.",".$this->userPass. 
         ",".$this->userType.")"; 

     if ($this->con->query($sql) === TRUE) { 
      echo "Record Added successfully"; 
     } else { 
      echo "Error Adding record: " . $conn->error; 
     } 
    } 

    public function editInDB($userNewAccount, $userID) { 
     $a = $userNewAccount->userName; 
     $b = $userNewAccount->userPass; 
     $c = $userNewAccount->userType; 
     $sql = "UPDATE login SET userName =".$a.", userPass ='".$b."', userType =".$c." WHERE userID =".$userID; 
     echo $sql; 
    } 
} 
$x = new userAccount("Heba", "Taba3", 1, $con); 
$x->writeInDB(); 
İlgili konular