我有一个数据库函数,我正在尝试计算是否可以以与新函数相同的格式传递db信息。
我使用的是全局db connect函数,但被告知这是一种糟糕的做法,因此我编写了一个函数,如下所示
function mysystem(mysqli $db){
//mystuff here
}并且它可以毫无问题地连接到数据库。
我的第二个函数有点不同,我创建了一个函数来检查是否存在重复的内容
function check_duplicate_entries($table, $column_name, $value){
$db = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME);
$stmt = $db->prepare("SELECT * FROM $table WHERE $column_name = ?");
$stmt->bind_param('s', $value);
$stmt->execute();
$result = $stmt->get_result();
$stmt->close();
if (mysqli_num_rows($result) == 1) {
return true;
} else {
return false;
}
}有没有一种方法可以像其他函数一样传递数据库信息,而不是调用新的数据库连接。
像这样
function check_duplicate_entries(mysqli $db, $table, $column_name, $value){发布于 2020-04-09 21:30:09
是。通常使用单例模式来处理此问题。这是PDO的代码示例,您可以将其重构为mysqli
class MysqlConnector
{
private static $connection;
private function __construct()
{
}
public static function getConnection(): PDO
{
$username = "root";
$password = "";
$database = "blog";
$servername = "localhost";
if (!empty(self::$connection)) {
return self::$connection;
}
self::$connection = new PDO("mysql:host=$servername;dbname=$database", $username, $password);
self::$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return self::$connection;
}
}
// now you can get your connection anywhere
// just make sure this class is available in your current namespace
$connection = MysqlConnector::getConnection();
$connection->query('SELECT COUNT(*) FROM articles');https://stackoverflow.com/questions/61121162
复制相似问题