PHPのSelectQueryオブジェクトからSELECTmysqlクエリの一般的な関数を作成するにはどうすればよいのでしょうか。SelectQueryはQueryを拡張します。これは、データベース接続、realescapeメソッド(mysqli_real_escape_string())、およびクエリを実行するqueryメソッドを継承することを意味します。さらに、query()メソッドがデータベースに渡すSQLである_sqlと呼ばれる保護された変数も取得します。また、作業中のテーブルの(エスケープされた)名前を含む_tableという保護変数も取得します。
私のコード:
public function select($columns = array('*'), $known = null, $limit = null, $offset = null, $orderby = null, $asc = true) {
if (!is_array($columns)) {
new Error('Parameter is not an array.');
return;
}
$select = '';
foreach($columns as $column) {
$select .= (($select != '')?', ':'') . '`' . $this->realescape($column) . '`';
}
$conditions = '';
if (is_array($known)) {
foreach($known as $column => $value) {
$conditions .= (($conditions != '')?' AND ':'WHERE ') . '`' . $this->realescape($column) . '` = ' . ((is_string($value))?'\'':'') . $this->realescape($value) . ((is_string($value))?'\'':'');
}
}
$domain = '';
if ($limit !== null) {
$domain = 'LIMIT ' . $this->realescape($limit);
if ($offset !== null) {
$domain .= ' OFFSET = ' . $this->realescape($offset);
}
}
$order = '';
if ($orderby !== null) {
$order = 'ORDER BY `' . $this->realescape($orderby) . '` ' . (($asc)?'ASC':'DESC');
}
$this->_sql = 'SELECT ' . $select . ' FROM `' . $this->_table . '`';
if ($conditions != '') {
$this->_sql .= ' ' . $conditions;
}
if ($domain != '') {
$this->_sql .= ' ' . $domain;
}
if ($order != '') {
$this->_sql .= ' ' . $order;
}
return $this->query();
}
$ known変数が設定されている可能性があります。設定されている場合は、選択している行のすべての「既知の」要素を含む配列である必要があります。
私の質問:、、
age < 18
またはなどの条件date > 5120740154
を簡単に作成できるようにするには、どうすればよいですか?
また、私がこの作品を作る方法が間違っていると思うなら、そう言ってください。
前もって感謝します