Mysql
 sql >> Base de données >  >> RDS >> Mysql

interroger la base de données mysql depuis l'intérieur d'une classe

Transmettez-le à la méthode elle-même

Vous devez passer l'objet de la base de données à la méthode, car ils ne sont pas dans la même portée :

function runQuery($mysqli)

et appelez-le comme

$a = new theClass;
$a->runQuery($mysqli);

Passez-le au constructeur

Si votre classe effectue de nombreux appels à la base de données, vous pouvez simplement la transmettre au constructeur et l'enregistrer en tant que variable privée pour une utilisation ultérieure :

class theClass
{
  private $mysqli;

  function __construct($mysqli) {
    $this->mysqli = $mysqli;
  }

  function runQuery()
  {
    $query = "SELECT col_1 FROM db.table";
    $stmt = $this->mysqli->prepare($query);
    stmt->execute();
    $stmt->bind_result($r);

    while($stmt->fetch())
    {
      echo $r . "<br>";
    }
  }
};

et appelez-le comme

$a = new theClass($mysqli);
$a->runQuery();

Les deux méthodes indiquent clairement que la dépendance de votre classe est un objet mysqli, ce qui est bon pour la maintenance et la lisibilité futures.