dpc46827
2015-12-26 13:40
浏览 6
已采纳

PHP类使用mysqli

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.

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • dqwr32867 2015-12-26 13:47
    已采纳

    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);
    
    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • dourou9477 2015-12-26 13:51

    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' );
    
    ?>
    
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题