这是我在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看起来很糟糕。
你们可以建议更好,更干净的方式。
感谢
答案 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);;
}