使用属性从类内部查询mysql数据库


query mysql database from inside a class using properties

嗨,这是这个问题的升级版本:从类内部查询mysql数据库与前面的问题不同的是,我需要一个动态查询,而不是静态查询,或者l$query="SELECT col_1FROM db.table";因此,为了有一个动态查询,我需要使用属性(或变量),这样我就可以从同一个类调用不同的表,或者类似于"SELECT'$data'from'$table'"的东西;

到目前为止,我的课是这样的,类似于前面的问题:

 $mysqli = new mysqli("localhost", "root", "", "intranetpugle");
class crudmum {
    private $table;
    private $data;
    private $mysqli;
  function __construct($mysqli) {   
    $this->mysqli = $mysqli;
  }

function runQuery($data2, $table2)
  {
    $this->table = $table2; $this->data = $data2;
    $query = "SELECT '$this->data' FROM '$this->table' ";
    $stmt = $this->mysqli->prepare($query);
    $stmt->execute();
    $stmt->bind_result($r);
    while($stmt->fetch())
    {    
          echo "<option>" . $r . "</option>";
    } 
  } 
};

这就是我运行它的方式:

$showme = new crudmum($mysqli); 
$showme->runQuery("priority", "trackboards" );

注意:当我在查询中不使用变量或属性时,或者类似于SELECT priority FROM轨迹板时,查询确实有效,只有当我输入属性或变量时(如给定示例),它才无效。

我收到以下错误:致命错误:在C:''examplep''htdocs''devserv''i+d''bootstrap''functions.php76行
中对非对象调用成员函数prepare()

任何人都知道我做错了什么,当然数据库查询也有错误——关于如何在类中以动态方式正确查询数据库的任何想法,对不起,PHP的OOP是新的!

发现了在变量上添加"引号"的错误,如下所示:

 $query = "SELECT '$this->data' FROM '$this->table' ";

正确的方法是去掉变量上的"引号",或者像这样:

$query = "SELECT $this->data FROM $this->table ";

有了这个修复,查询运行得很好,我想我对细节不够关注,感谢大家的帮助。