2016-04-14 25 views
0

Aşağıdaki betik ile kullanıcı tablosuna yeni bir kullanıcı eklemeye çalışıyorum. Sınıflarla çalışmaya başladım ve şu ana kadar çalışamam. Sunucum PHP7 çalışıyor. Ben başarı mesajı alır aşağıdaki I işlevine connect.php içinde bağlantı işlevini değiştirirsenizPHP sınıfı tabloya veri eklemiyor

<?php 

class DB_Connect { 

    // constructor 
    function __construct() { 

    } 

    // destructor 
    function __destruct() { 
     // $this->close(); 
    } 

    // Connecting to database 
    public function connect() { 
     require_once '/folder/folder/folder/config.php'; 
     // connecting to mysql 
     $conn = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE); 

     // return database handler 
     return $conn; 
    } 

    // Closing database connection 
    public function close() { 
     $conn->close(); 
    } 

} 
?> 

(Bağlı

Config.php

<?php 
/** 
* Database config variables 
*/ 
define("DB_HOST", "localhost"); 
define("DB_USER", "username"); 
define("DB_PASSWORD", "12345"); 
define("DB_DATABASE", "databasename"); 
?> 

connect.php başarıyla) bu yüzden veritabanı bağlantısı sorunu olmadığını düşünüyorum:

public function connect() { 
    require_once '/folder/folder/folder/config.php'; 
    // connecting to mysql 
    $conn = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE); 

    // Check connection 
    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 
    echo "Connected successfully"; 
} 

functions.php'ın

<?php 

class DB_Functions { 

    private $db; 

    //put your code here 
    // constructor 
    function __construct() { 
     include_once './connect.php'; 
     // connecting to database 
     $this->db = new DB_Connect(); 
     $this->db->connect(); 
    } 

    // destructor 
    function __destruct() { 

    } 

    /** 
    * Storing new device 
    */ 
    public function storeUser($name, $userid, $club) { 
     echo; 
     // insert user into database 
     $result = "INSERT INTO users(name, user_id, club_id, created_at) VALUES('$name', $userid, $club, NOW())"; 
     // check for successful store 
     if ($result) { 
      // succes 
      return "Device is added"; 
     } else { 
      return "Error: Device is not added!" ; 
     } 
    } 

    /** 
    * Getting all users 
    */ 
    public function getAllUsers() { 
     $result = "select * FROM users"; 
     return $result; 
    } 

} 

?> 


komut Ben bir test kullanıcı eklemek için tarayıcıda çalıştırmak için bir test komut dosyası olarak yapılan aşağıda: insert deyimi yürütme olmadan

<?php 

$name = "1234567890"; 
$userid = "1234"; 
$club = "09876"; 

include_once './functions.php'; 

$db = new DB_Functions(); 

$res = $db->storeUser($name, $userid, $club); 

echo $res; 

?> 
+0

kullanıcıların tabloya eklemek için izni MySQL kullanıcı var mı? –

+4

Hiçbir zaman mysql'ye bir şey göndermezsiniz, sadece bir değişkende bir dizgeyi saklarsınız. – PeeHaa

+0

Sorguyu gerçekte nerede yürütüyorsunuz? – David

cevap

0

ve bağlantı kaynağı, işe yaramaz.

$result = $this->db->connect()->query("INSERT INTO `users`(`name`, `user_id`, `club_id`, `created_at`) 
       VALUES('$name', '$userid', '$club', NOW())"); 

Ve veri takılı olup olmadığını kontrol: Bu deneyin

if($this->db->connect()->affected_rows){ 
    return 'Device is added'; 
} 

Fonksiyon bağlamak() herhangi bir bağlantı döndürmez: Bağlantı başarısını yankılanan yerine return $conn; koymak gerekir

.

+0

Şimdi çalışıyor, kodunuz veritabanına ekliyor. Girilen kontrol çalışmıyor. Komut dosyasını çalıştırdığımda boş bir sayfa alıyorum (geri bildirim yok). – user1242574

+0

Lütfen bu [link] dosyasına bakın (http://php.net/manual/en/mysqli.affected-rows.php). Cevabım yardımcı olursa, yukarıdaki onay simgesini tıklayabilirsiniz. –

0

DB örneğinizden herhangi bir sorgu göndermediniz.

connect.php

class DB_Connect { 
    private static $_instance; 

    // destructor 
    function __destruct() { 
     $this->close(); 
    } 

    // Connecting to database 
    public function connect() { 
     require_once '/folder/folder/folder/config.php'; 

     if (self::$_instance === null) { 
      // connecting to mysql 
      self::$_instance = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE); 
     } 
     // return database handler 
     return self::$_instance; 
    } 

    // Closing database connection 
    public function close() { 
     if (self::$_instance !== null) { 
      self::$_instance->close(); 
     } 
    } 

} 

functions.php.php

public function storeUser($name, $userid, $club) { 
    // insert user into database 
    $query = "INSERT INTO users(name, user_id, club_id, created_at) VALUES({$name}, {$userid}, {$club}, NOW())"; 
    $result = this->db->query($query); // <--- you missed out this syntax... 
    // check for successful store 
    if ($result) { 
     // succes 
     return "Device is added"; 
    } else { 
     return "Error: Device is not added!" ; 
    } 
} 
+0

Kapatma yöntemi, –

+0

npe ile sonuçlanacaktır [Tekil kalıp aslında PHP'de pek fazla işlem yapmaz.] (Http: // stackoverflow.com/questions/4595964/is-there-a-use-case-için-single-in-veritabanı-erişim-in-php/4596323 # 4596323) – Mikey

+0

@Mikey Thnkas senin özensizlik, ancak, ben aşağı bağlantı yazdı olamaz Bu dava için havuz, belki de posterin problemini çözmek zorundadır. –