服务器端 Ajax JQuery CRUD DataTable - PHP PDO,MySql
Posted
技术标签:
【中文标题】服务器端 Ajax JQuery CRUD DataTable - PHP PDO,MySql【英文标题】:Server Side Ajax JQuery CRUD DataTable - PHP PDO, MySql 【发布时间】:2021-03-20 19:55:08 【问题描述】:我正在尝试使用存储在子表中的 Id 从子表中获取数据,以填充 DataTable 并显示与父表和子表相关的记录。下面是代码:
问题是当我添加 WHERE 语句以根据 HolderID 获取记录时显示返回但未显示的条目数。并且过滤后也显示 0 代码:
function get_beneficaries_records($rowId)
include('db.php');
$statement = $connection->prepare("SELECT * FROM beneficiaries WHERE HolderID = $rowId");
$statement->execute();
$result = $statement->fetchAll();
return $statement->rowCount();
Fetching records on fectchrecords.php.
$query .= "SELECT * FROM pro_beneficiaries";
if(isset($_POST["search"]["value"]))
$query .= ' WHERE BeneficiaryIDNo LIKE "%'.$_POST["search"]["value"].'%" ';
$query .= 'OR LastName LIKE "%'.$_POST["search"]["value"].'%" ';
$query .= 'OR Initials LIKE "%'.$_POST["search"]["value"].'%" ';
if(isset($_POST["search"]["value"]))
$query .= 'OR BeneficiaryIDNo LIKE "%'.$_POST["search"]["value"].'%" ';
if(isset($_POST["order"]))
$query .= 'WHERE FK_HolderID = $rowIds';
$query .= 'ORDER BY '.$_POST['order']['0']['column'].' '.$_POST['order']['0']['dir'].' ';
else
$query .= 'ORDER BY BID DESC ';
if($_POST["length"] != -1)
$query .= ' WHERE BeneficiaryID LIKE "%'.$_POST["search"]["value"].'%" ';
$statement = $connection->prepare($query);
$statement->execute();
$result = $statement->fetchAll();
$data = array();
$filtered_rows = $statement->rowCount();
foreach($result as $row)
$sub_array = array();
$sub_array[] = $row["Initials"];
$sub_array[] = $row["LastName"];
$sub_array[] = $row["BeneficiaryIDNo"];
$sub_array[] = $row["Relationship"];
$sub_array[] = $row["MemberType"];
$sub_array[] = '<button type="button" name="update" id="'.$row["BID"].'" class="btn btn-outline-warning btn-xs updatebeneficiary"><i class="fa fa-pencil-alt"></i></button>';
$sub_array[] = '<button type="button" name="delete" id="'.$row["BID"].'" class="btn btn-outline-danger btn-xs deletebeneficiary"><i class="fa fa-minus"></i></button>';
$data[] = $sub_array;
$output = array(
"draw" => intval($_POST["draw"]),
"recordsTotal" => $filtered_rows,
"recordsFiltered" => get_beneficaries_records($rowId),
"data" => $data
);
echo json_encode($output);
【问题讨论】:
这似乎是一个关于 sql 查询而不是 ajax 的问题。 Concour @RayB 对于一个问题,您是否能够尽可能多地删除并且仍然能够复制问题。 @RayB 和 Anton Krug,问题仍然存在,我只需要获取数据并将其填充到数据表 WHERE HolderID = $rowId 但似乎不起作用 您已经在使用准备好的语句,为什么还要直接在查询中注入值。使用占位符并将变量用作执行函数中的有效负载 @Kevin 你有我如何实现它的例子吗? 【参考方案1】:我会打印查询结果的原始内容,我会打印查询本身,以便查看生成的代码,然后我可以在单独的客户端中运行它(为此我喜欢 HeidiSQL)。
而且我认为可能会出现重复的 WHERE 条件
if(isset($_POST["order"]))
$query .= 'WHERE FK_HolderID = $rowIds';
if($_POST["length"] != -1)
$query .= ' WHERE BeneficiaryID LIKE "%'.$_POST["search"]["value"].'%" ';
我会将它组合成一个 WHERE 并使用布尔 AND OR 来形成我想要的条件
【讨论】:
Anton Krug,请告知我将如何实施此解决方案以上是关于服务器端 Ajax JQuery CRUD DataTable - PHP PDO,MySql的主要内容,如果未能解决你的问题,请参考以下文章
使用Struts2和jQuery EasyUI实现简单CRUD系统(转载汇总)