You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
wastesortingserver/database/Query.php

276 lines
5.5 KiB

<?php
require_once $_SERVER["DOCUMENT_ROOT"] . "/entity/ApiToken.php";
require_once $_SERVER["DOCUMENT_ROOT"] . "/entity/Garbage.php";
require_once $_SERVER["DOCUMENT_ROOT"] . "/entity/Question.php";
require_once $_SERVER["DOCUMENT_ROOT"] . "/entity/Answer.php";
require_once $_SERVER["DOCUMENT_ROOT"] . "/entity/Manager.php";
require_once $_SERVER["DOCUMENT_ROOT"] . "/entity/Param.php";
require_once $_SERVER["DOCUMENT_ROOT"] . "/database/DbUtil.php";
abstract class BindParam implements DoExcute
{
public function bind_param(mysqli_stmt $stmt, array $param = null)
{
if (!is_null($param)) {
$types = "";
foreach ($param as $p) {
if (is_double($p)) {
$types .= "d";
} else if (is_numeric($p)) {
$types .= "i";
} else if (is_string($p)) {
$types .= "s";
} else {
$types .= "b";
}
}
$stmt->bind_param($types, $param[0], ...array_slice($param, 1));
}
}
}
//Token查询
class QueryToken extends BindParam
{
// token查询结果
private $token_array = array();
/**
* TokenQuery constructor.
*/
public function __construct()
{
}
// 绑定toekn信息
public function doResult(mysqli_stmt $stmt)
{
/**
*
* $col1 $id
* $col2 $refresh_token
* $col3 $expires_in
* $col4 $end_time
* $col5 $scope
* $col6 $session_key
* $col7 $access_token
* $col8 $session_secret
*/
$stmt->bind_result($col1, $col2, $col3, $col4, $col5, $col6, $col7, $col8);
while ($stmt->fetch()) {
array_push($this->token_array, new ApiToken($col1, $col2, $col3, $col4, $col5, $col6, $col7, $col8));
}
}
/**
* @return array
*/
public function getTokenArray(): array
{
return $this->token_array;
}
function getToken(): ApiToken
{
return $this->token_array[0];
}
}
//垃圾分类查询
class QueryGarbage extends BindParam
{
// 垃圾分类查询结果
private $garbage_obj_array = array();
public function doResult(mysqli_stmt $stmt)
{
$stmt->bind_result($col1, $col2, $col3, $col4);
while ($stmt->fetch()) {
array_push($this->garbage_obj_array, new Garbage($col1, $col2, $col3, $col4));
}
}
/**
* @return array
*/
public function getGarbageObjArray(): array
{
return $this->garbage_obj_array;
}
}
//查询问题
class QueryQuestion extends BindParam
{
private $question_array = array();
public function doResult(mysqli_stmt $stmt)
{
$stmt->bind_result($col1, $col2);
while ($stmt->fetch()) {
array_push($this->question_array, new Question($col1, $col2));
}
}
/**
* @return array
*/
public function getQuestionArray(): array
{
return $this->question_array;
}
}
//查询问题答案
class QueryAnswer extends BindParam
{
private $answer_array = array();
public function doResult(mysqli_stmt $stmt)
{
$stmt->bind_result($col1, $col2, $col3, $col4);
while ($stmt->fetch()) {
array_push($this->answer_array, new Answer($col1, $col2, $col3, $col4));
}
}
/**
* @return array
*/
public function getAnswerArray(): array
{
return $this->answer_array;
}
}
function get_category($category)
{
switch ($category) {
case 1:
return "可回收垃圾";
case 2:
return "有害垃圾";
case 4:
return "湿垃圾";
case 8:
return "干垃圾";
case 16:
return "大件垃圾";
}
}
//统计垃圾分类数据量
class CountGrabage extends BindParam
{
private $result = array();
public function doResult(mysqli_stmt $stmt)
{
$stmt->bind_result($col1, $col2);
while ($stmt->fetch()) {
array_push($this->result, array("category" => $col1, "category_name" => get_category($col1), "count" => $col2));
}
}
/**
* @return array
*/
public function getResult(): array
{
return $this->result;
}
}
//查询某个垃圾分类数据量
class QueryGarbageCount extends BindParam
{
private $count;
public function doResult(mysqli_stmt $stmt)
{
$stmt->bind_result($col1);
while ($stmt->fetch()) {
$this->count = $col1;
}
}
/**
* @return mixed
*/
public function getCount()
{
return $this->count;
}
}
//查询管理
class QueryManager extends BindParam
{
private $manager_result;
public function doResult(mysqli_stmt $stmt)
{
$stmt->bind_result($col1, $col2, $col3, $col4);
while ($stmt->fetch()) {
$this->manager_result = new Manager($col1, $col2, $col3, $col4);
}
}
/**
* @return mixed
*/
public function getManagerResult()
{
return $this->manager_result;
}
}
//查询系统参数
class QueryParam extends BindParam
{
private $param_list = array();
public function doResult(mysqli_stmt $stmt)
{
$stmt->bind_result($col1, $col2, $col3);
while ($stmt->fetch()) {
$this->param_list[$col1] = new Param($col1, $col2, $col3);
}
}
/**
* @return array
*/
public function getParamList(): array
{
return $this->param_list;
}
}