嗨,这是这个问题的升级版本:从类内部查询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.php的76行
中对非对象调用成员函数prepare()
任何人都知道我做错了什么,当然数据库查询也有错误——关于如何在类中以动态方式正确查询数据库的任何想法,对不起,PHP的OOP是新的!
发现了在变量上添加"引号"的错误,如下所示:
$query = "SELECT '$this->data' FROM '$this->table' ";
正确的方法是去掉变量上的"引号",或者像这样:
$query = "SELECT $this->data FROM $this->table ";
有了这个修复,查询运行得很好,我想我对细节不够关注,感谢大家的帮助。