sql >> Databasteknik >  >> RDS >> Mysql

fråga mysql-databas inifrån en klass

Överför det till själva metoden

Du måste skicka databasobjektet till metoden, eftersom de inte är i samma omfattning:

function runQuery($mysqli)

och kalla det som

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

Skicka den till konstruktören

Om din klass gör många databasanrop kan du helt enkelt skicka den i konstruktorn och spara den som en privat variabel för senare användning:

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>";
    }
  }
};

och kalla det som

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

Båda metoderna gör det klart att beroendet för din klass är ett mysqli-objekt, vilket är bra för framtida underhåll och läsbarhet.



  1. Hur kan jag få summan av flera datetime-värden?

  2. PHP SQL STMT VÄLJ flera LIKE? är det möjligt?

  3. hur man övervinner ERROR 1045 (28000):Åtkomst nekad för användaren 'ODBC'@'localhost' (med lösenord:NO) permanent

  4. Hur programmerar man en MySQL-utlösare för att infoga rad i en annan tabell?