一尘不染

使用默认前缀从具有300个表的mysql数据库中选择

sql

我有一个程序,可以从大约200个带前缀的表中进行选择。例如PBN_products,PBN_address,PBN_others。除了将前缀添加到每个表的select语句之外,还可以将前缀定义为默认值,然后进行选择吗?

$prefix=GET['prefix'];
mysql_connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD);
mysql_select_db(DB_DATABASE);
$sql = 'SELECT price, description, title, cost'.
        'FROM products, address, others';

如何定义不包含在所有表中的前缀?我有200张桌子。


阅读 221

收藏
2021-03-08

共1个答案

一尘不染

我将研究一个类来执行一些简单的查询抽象或执行此操作的某种ORM库。一个样本就是这样。

class Query {
    function from($tbl){
        return new Table($tbl);
    }
}
class Table {
    var $prefix = 'PBN_';
    var $tblname = '';

    function Table($name){
        $this->tblname = $this->prefix.$name;
    }
    function select($cols, $where = false, $order = false, $limit = false){
        $query = "SELECT {$cols} FROM {$this->tblname}";
        if($where) $query .= " WHERE ".$where; //add where
        if($order) $query .= " ORDER BY ".$order; //add order
        if($limit) $query .= " LIMIT ".$limit; //add limit
        return $query;
    }
}

$q = new Query;
$results = mysql_query($q->from('products')->select('*'));

显然,这远远没有完成或安全。只是一个抽象类如何加速您的sql并为您提供前缀的示例。

2021-03-08