【问题标题】:Server Side Ajax JQuery CRUD DataTable - PHP PDO, MySql服务器端 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 你有我如何实现它的例子吗?

标签: php jquery mysql ajax


【解决方案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,请告知我将如何实施此解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-07
  • 1970-01-01
  • 1970-01-01
  • 2019-11-29
  • 2015-12-08
  • 1970-01-01
  • 2012-01-18
相关资源
最近更新 更多