在课堂上使用mysqli对象的最佳方法

时间:2015-03-12 07:39:48

标签: php mysqli

这是我在config.php文件中的代码:

    <?php
$db_username =  'name';
$db_password = 'my password';
$db_name = 'my db';
$db_host = 'localhost';
$mysqli = new mysqli($db_host, $db_username, $db_password, $db_name);
    if ($mysqli->connect_error) {
        throw new Exception("Error in Database Connection!");
    }
?>

现在我将function.php与class commonFunctions

分开
<?php
require_once '../config/config.php';
class commonFunctions {
function doLogin(){
global $mysqli;
$result = $mysqli->query("SELECT * FROM table WHERE itemcolor = 'red'") ;
$row_cnt = $result->num_rows;
return $row_cnt;
}
}
$common=new commonFunctions();
?>

这里我使用global $mysqli;从配置访问$ mysqli,这可能不是一个合适的编程方法,并且在每个函数中使用global $mysqli;来访问$ mysqli看起来很糟糕。 你们可以建议更好,更干净的方式。 感谢

1 个答案:

答案 0 :(得分:0)

这取决于你喜欢的编程范例。我个人喜欢我的PHP是面向对象(OO),所以我把mysql放在一个名为DB的新类中,然后当我想运行查询时,我做$db->query('blabla')

class DB {

    private $db;

    function __construct() {
        $dbConfig = Main::app()->config['db'];
        $this->db = new \mysqli($dbConfig['host'], $dbConfig['user'], $dbConfig['pass'], $dbConfig['db']);
    }

    public function query($query, $where = false) {
        if (!empty($where)) {
            if (strpos(strtolower($where), 'where') > 0)
                $query .= ' ' . $where;
            else
                $query .= ' WHERE ' . $where;
        }
        $result = $this->db->query($query);
        if (!isset($result) || $result ===  false) {
            dd([$query, $this->db->error, $where]);
        }
        /* will return true on INSERT / UPDATE queries */
        if ($result !== true)
            return  $result->fetch_all(MYSQL_ASSOC);
    }


}

也许你可能只想在处理所有查询的commonFunctions中创建一个函数?

 function query($query) {
     global $mysqli;
      return $mysqli->query($query);;
    }