【发布时间】:2021-01-23 04:47:55
【问题描述】:
我想创建一个动态选择语句,它可以选择我要求的任何表,与我数据库中的表列相同。
这是我目前选择的课程:
<?php
class select extends database{
// Instance variables
private $id;
public $table;
public $column;
public $sql;
public $result = array();
// Methods - Behavior
public function selectQuery($table){
global $con;
$sql = $this->sql;
$sql = "SELECT * FROM {$table}";
$result = $this->con->query($sql);
while($row = $result->fetch_object()){
//iterate all columns from the selected table
//and return it someway.
}
}
}
$selectQuery = new select();
这是我的数据库类
require_once(LIB_PATH.DS."config.php");
class database
{
public $con;
public $result = array();
public function __construct()
{
$this->con = new mysqli(DB_HOST,DB_USERNAME,DB_PASSWORD,DB);
if($this->con->connect_error){
die($this->con->connect_error);
}
}
}
$db = new database();
到目前为止,我正在做的是使用 mysqli 连接到我的数据库,然后我从我的数据库类中扩展我的选择类,这样我就可以获得连接,然后我想从中选择全部。
【问题讨论】:
-
你的$table和array是什么?还是只是一个表名?
-
您不需要在类文件本身中实例化您的
database或select类(即$db = new database();在数据库类文件中是多余的)。只需在需要时/在需要时实例化对象即可。 -
另外,从
selectQuery方法中删除global $con;...因为select extends database你的mysqli连接($con)在选择类中通过$this->con可用(因为它有公共可见性......虽然应该受到保护)。 -
你不必在类中返回连接吗?
-
不,它是在
database构造函数中设置的;因为select类扩展了database类,当select被实例化时database::__construct()应该被调用。