我可以轻松地检测到我的代码中存在的问题,但是找不到解决方法。我发现我可能未正确包含数据库表。想法是将Datatables与该AJAX url一起使用,以便可以进行分页,搜索和排序。
这是我的AJAX文件
<?php
include '../../DAL/Database.php';
## Read value
}
$draw = $_POST['draw'];
$row = $_POST['start'];
$rowperpage = $_POST['length']; // Rows display per page
$columnIndex = $_POST['order'][0]['column']; // Column index
$columnName = $_POST['columns'][$columnIndex]['data']; // Column name
$columnSortOrder = $_POST['order'][0]['dir']; // asc or desc
$searchValue = $_POST['search']['value']; // Search value
$searchArray = array();
## Search
$searchQuery = " ";
if($searchValue != ''){
$searchQuery = " AND (naziv LIKE :naziv OR opis LIKE :opis OR naziv_radnog_mesta LIKE :naziv_radnog_mesta ) ";
$searchArray = array(
'naziv'=>"%$searchValue%",
'opis'=>"%$searchValue%",
'naziv_radnog_mesta'=>"%$searchValue%"
);
}
## Total number of records without filtering
$stmt = $this->conn->prepare("SELECT COUNT(*) AS allcount FROM taskovi");
$stmt->execute();
$records = $stmt->fetch();
$totalRecords. = $records['allcount'];
## Total number of records with filtering
$stmt = $this->conn->prepare("SELECT COUNT(*) AS allcount FROM taskovi WHERE 1 ".$searchQuery);
$stmt->execute($searchArray);
$records = $stmt->fetch();
$totalRecordwithFilter = $records['allcount'];
## Fetch records
$stmt = $conn->prepare("SELECT * FROM taskovi WHERE 1 ".$searchQuery." ORDER BY ".$columnName." ".$columnSortOrder." LIMIT :limit,:offset");
// Bind values
foreach($searchArray as $key=>$search){
$stmt->bindValue(':'.$key, $search,PDO::PARAM_STR);
}
$stmt->bindValue(':limit', (int)$row, PDO::PARAM_INT);
$stmt->bindValue(':offset', (int)$rowperpage, PDO::PARAM_INT);
$stmt->execute();
$empRecords = $stmt->fetchAll();
$data = array();
foreach($empRecords as $row){
$data[] = array(
"naziv"=>$row['naziv'],
"opis"=>$row['opis'],
"naziv_radnog_mesta"=>$row['naziv_radnog_mesta'],
"id_task"=>$row['id_task'],
"id_radno_mesto"=>$row['id_radno_mesto'],
);
}
## Response
$response = array(
"draw" => intval($draw),
"iTotalRecords" => $totalRecords,
"iTotalDisplayRecords" => $totalRecordwithFilter,
"aaData" => $data
);
echo ($response);
echo json_encode($response);
我的数据库代码是
<?php
class Database
{
private $hostname = 'localhost';
private $username = 'root';
private $password = '';
private $db = 'business';
private $conn = null;
public function getConnection()
{
if (null === $this->conn) {
$this->dbConnect();
}
#echo "Connection successfull";
return $this->conn;
}
/**
* Establish database connection.
*/
private function dbConnect()
{
try {
$this->conn = new PDO("mysql:host=" . $this->hostname . ";dbname=" . $this->db,
$this->username, $this->password);
$this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die('Connect error ' . $e->getMessage());
}
}
}
您尝试使用其所属类之外的$conn
访问PDO实例($this
)。在Database类的方法中,可以用$this
引用当前实例,但不能在外部引用。
您需要实际创建数据库类的实例,然后访问其$conn
。