I need something like this.
$mysqli = new mysqli($bd_host, $bd_user, $bd_password);
class webFile {
function __construct($querystr){
if ($result = $this->$mysqli->query($querystr)) {
while( $row = $result->fetch_assoc() ){ echo $row['name']; }
$result->close();
}}}
$object = new webFile($querystr);
I try in different variants, but somethink do not work. I interested in mysqli->query
not mysqli_query(a,b);
UPD 1. Your solutions not work. 2. Thanks, work fine, the problem was with DB also.
You need to use global
for PHP to look in the global scope and see your $mysqli
variable, and because this is a global variable you can't use $this
:
$mysqli = new mysqli($bd_host, $bd_user, $bd_password);
class webFile {
function __construct($querystr){
global $mysqli;
if ($result = $mysqli->query($querystr)) {
while( $row = $result->fetch_assoc() ){ echo $row['name']; }
$result->close();
}}}
$object = new webFile($querystr);
You could also just pass your MySQLi
object to your constructor and have a property:
$mysqli = new mysqli($bd_host, $bd_user, $bd_password);
class webFile {
function __construct($querystr, $conn){
$this->mysqli = $conn;
if ($result = $this->mysqli->query($querystr)) {
while( $row = $result->fetch_assoc() ){ echo $row['name']; }
$result->close();
}}
private $mysqli;
}
$object = new webFile($querystr, $mysqli);
You could do it like this perhaps, injecting the connection into the class constructor.
<?php
$dbhost = 'localhost';
$dbuser = 'root';
$dbpwd = 'xxx';
$dbname = 'xxx';
$oConn=new mysqli($dbhost, $dbuser, $dbpwd, $dbname);
class webFile{
private $conn;
public function __construct( $conn=object, $sql=false, $field=false ){
if( $conn && $sql && $field ){
$this->conn=$conn;
$res=$this->conn->query( $sql );
if( $res ){
while( $rs=$res->fetch_object() ) echo $rs->$field;
}
}
}
}
$obj=new webFile( $oConn, 'select * from users', 'user' );
?>