【发布时间】: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 你有我如何实现它的例子吗?