嗨,这是这个问题的升级版本: query mysql database from inside a class 与前一个问题的区别在于,我需要动态查询而不是静态查询或l $ query =" SELECT col_1 FROM db.table&#34 ;;因此,为了获得动态查询,我需要使用属性(或变量),以便我可以从同一个类调用不同的表,或类似的东西" 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优先级FROM trackboards时,查询确实有效,只有当我输入属性或变量时(如给定的示例) )它不起作用。
我收到此错误: 致命错误:在 C:\ xampp \ htdocs \ devserv \ i + d \ bootstrap \ functions.php 上的非对象上调用成员函数prepare() 76
行任何人都会看到我做错了什么,当然数据库查询有关如何在一个类中以动态方式查询数据库的任何想法都是错误的,对于使用PHP的OOP而言,这是对不起的新事物。
答案 0 :(得分:1)
发现错误是在变量上添加'引号',如下所示:
$query = "SELECT '$this->data' FROM '$this->table' ";
正确的方法是在变量上取出那些“引号”,或者像这样:
$query = "SELECT $this->data FROM $this->table ";
使用该修复程序,查询运行得很好,猜测我缺乏对细节的关注,而不是每个人的帮助。