需要关于OOP PHP MySQL连接的建议吗
因此,我编写了一个简单的MySQLi类(从不同的教程中抓取+我自己的知识),我希望您指出任何错误和/或我应该添加/更改/删除什么。非常感谢。代码如下: dbclass.php需要关于OOP PHP MySQL连接的建议吗,php,mysql,oop,mysqli,Php,Mysql,Oop,Mysqli,因此,我编写了一个简单的MySQLi类(从不同的教程中抓取+我自己的知识),我希望您指出任何错误和/或我应该添加/更改/删除什么。非常感谢。代码如下: dbclass.php <?php class Database { protected static $connection; public function __construct() { self::$connection = $this->
<?php
class Database
{
protected static $connection;
public function __construct()
{
self::$connection = $this->connect();
}
public function __destruct()
{
self::$connection->close();
}
private function connect()
{
if (!isset(self::$connection))
{
$config = parse_ini_file("dbsettings.ini");
self::$connection = new mysqli($config["host"], $config["username"], $config["password"], $config["database"]);
}
if (!self::$connection)
return false;
return self::$connection;
}
public function query($query)
{
$result = self::$connection->query($query);
return $result;
}
public function select($query)
{
$rows = array();
$result = $this->query($query);
if (!$result)
return false;
while ($row = $result->fetch_assoc())
{
$rows[] = $row;
}
return $rows;
}
public function escape($value)
{
$value = htmlspecialchars($value, ENT_QUOTES, "UTF-8");
return "'".self::$connection->real_escape_string($value)."'";
}
};
?>
堆栈溢出不是代码审阅站点,但仍然是。让代码为您执行转义不是更好吗?您确定要为每个变量手工编写转义调用(有可能忘记),而不是像这样简单的一行吗
$conn = new Database;
$rows = $conn->select("SELECT * FROM users WHERE email = ?", [$_POST["email"]]);
问题是什么?第一个建议-了解预处理语句您是否试图将dbclass设置为单例类?您自己是否遇到错误?Stack Overflow不是一个代码审阅站点,但有一个反馈是必不可少的:任何不支持预处理语句的内容都不应使用。我不知道,谢谢:)
$conn = new Database;
$rows = $conn->select("SELECT * FROM users WHERE email = ?", [$_POST["email"]]);