我试图在我的index.php中初始化一个对象,但是它通常需要一个参数,所以我不能初始化和使用它。
我创建了一个由MYSQL函数实现的接口,该接口在执行“搜索”函数的“用户”模型中使用,之后我尝试将其保存在我的index.php中,但它需要参数。我应该传递什么样的参数来执行执行?我对数据库文件没有任何构造函数。只是一个MYSQL类,我想使用它与函数conectar()建立连接,并实现接口。
<?php
namespace Source\Model;
use Source\Controller\DatabaseInterface;
class User
{
private $dbConnection;
public function __construct(DatabaseInterface $dbConnection)
{
$this->dbConnection = $dbConnection;
}
public function search($dbConnection)
{
$query="SELECT * from categoria";
$queryrun=mysqli_query($dbConnection, $query);
echo '<pre>';
var_dump($queryrun);
echo '</pre>';
}
}Index.php
<?php
require __DIR__ . "./vendor/autoload.php";
use Source\Model\User;
$teste = new User();发布于 2022-11-22 07:02:21
您不需要真正的数据库包装!不过,这里有两个有趣的资源:
你真的应该使用PDO而不是MySqli。
这里是一个非常好的PDO教程。
下面是一个使用PDO实例而不是数据库包装器的例子。
index.php
<?php
require __DIR__ . "./vendor/autoload.php";
use Source\Model\User;
// Create a new database connection, e.g. a PDO instance.
$dbConnection = new PDO(
'mysql:host=localhost;port=3306;dbname=guest;charset=utf8', // DSN
'abc', // username
'def', // password
[
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_PERSISTENT => false,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
], // connection options
);
// Pass the PDO instance to all objects that need it (like object User).
$user = new User($dbConnection);
// Get all categories.
$categories = $user->getAllCategories();
echo '<pre>' . var_dump($categories) . '</pre>';User.php
<?php
namespace Source\Model;
use PDO;
class User {
private $dbConnection;
public function __construct(PDO $dbConnection) {
$this->dbConnection = $dbConnection;
}
public function getAllCategories(): array {
$sql = 'SELECT * FROM categoria';
/*
* Always prepare your sql statements to avoid SQL injections.
*
* @link https://phpdelusions.net/pdo#prepared Prepared statements. Protection from SQL injections
* @link https://phpdelusions.net/sql_injection The Hitchhiker's Guide to SQL Injection prevention
*/
$statement = $this->connection->prepare($sql);
$statement->execute();
$categories = $statement->fetchAll(PDO::FETCH_ASSOC);
return $categories;
}
}https://stackoverflow.com/questions/74520071
复制相似问题