2016-04-14 50 views
0

通过下面的脚本,我试图向用户表中添加一个新用户。 我是新来的工作与类,到目前为止我无法得到它的工作。我的服务器正在运行PHP7。PHP类向表中插入数据不起作用

的config.php

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

connect.php

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

} 
?> 

如果我更改connect.php给函数的连接功能,下面我得到的消息更迭(连接成功),所以我认为没有数据库连接问题:

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

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

} 

?> 


下面的脚本我做了一个测试脚本来运行在浏览器中添加一个测试用户:

<?php 

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

include_once './functions.php'; 

$db = new DB_Functions(); 

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

echo $res; 

?> 
+0

是否MySQL用户有权插入到用户表? –

+4

你永远不会发送任何东西到MySQL你只是将一个字符串存储在一个变量。 – PeeHaa

+0

你在哪里实际执行查询? – David

回答

0

没有执行INSERT语句和连接源,它不会工作。试试这个:

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

,并检查是否插入数据:

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

功能连接()不返回任何连接:

你必须把return $conn;,而不是附和连接成功。

+0

它正在工作,你的代码将其插入到数据库中。插入的检查不起作用。当我运行脚本时,我得到一个空白页面没有反馈(设备被添加)。 – user1242574

+0

请看这[link](http://php.net/manual/en/mysqli.affected-rows.php)。如果我的答案有帮助,可以点击上面的勾号图标。 –

0

您没有从您的数据库实例发送任何查询。

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

关闭方法将导致一个n –

+0

[单实例模式在PHP中确实没有多大作用。](http:// stackoverflow。com/questions/4595964/is-there-a-use-case-for-singletons-with-database-access-in-php/4596323#4596323) – Mikey

+0

@Mikey然而,我不能写下连接对于这种情况,可能海报必须先解决他的问题。 –