我有一个数据库函数,我想弄清楚是否可以以与新函数相同的格式来传递数据库信息。
我使用的是全局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){
是。通常使用单例模式来处理此问题。这是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');
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句