【问题标题】:How can I filter first_name then search the only first_name in PHP PDO?如何过滤 first_name 然后在 PHP PDO 中搜索唯一的 first_name?
【发布时间】:2019-12-05 20:09:36
【问题描述】:

我有selecttextbox 输入用于过滤和搜索。当用户选择名字时,用户只能搜索名字。如果用户搜索“James”,则只有名字“James”会出现在表中。我怎样才能做到这一点?有人可以帮我解决我的问题吗?这是我的查询。

  public function searchUserStatus($keyword) {
$sql = "SELECT tbl_user.user_id, tbl_user.username, tbl_user.password, 
  tbl_user.first_name,tbl_user.last_name, tbl_user.is_employed, 
  tbl_barangay.barangay_name FROM tbl_user INNER JOIN tbl_barangay ON 
  tbl_barangay.barangay_id = tbl_user.barangay_id WHERE 
  (tbl_user.first_name LIKE :keyword AND tbl_user.username LIKE :keyword 
  OR tbl_user.first_name LIKE :keyword OR tbl_user.last_name LIKE :keyword 
  OR tbl_user.barangay_name LIKE :keyword) OR (tbl_user.last_name LIKE 
  :keyword AND tbl_user.username LIKE :keyword OR tbl_user.first_name LIKE 
  :keyword OR tbl_user.last_name LIKE :keyword OR tbl_user.barangay_name 
  LIKE :keyword)";

  $stmt = $this->connection->prepare($sql);

  $stmt->execute([
":keyword" => '%' . $keyword . '%'
  ]);

  return $stmt->fetchAll();
  }

【问题讨论】:

  • var_dump(searchUserStatus('James')) 给你什么?似乎是您的代码使用了导致问题的数据,而不是您的 SQL,因为它应该返回 ['id', 'username', 'password', 'first_name', 'last_name', 'is_employed', 'barangay_name']
  • 我该如何解决?你能帮助我吗?我想先选择字段名称,然后我只能根据我选择的字段名称搜索数据。
  • 就像我说的,var_dump(searchUserStatus('James')) 给你什么?
  • 没有数据显示
  • 你在 RAW sql 上试过了吗?你得到应得的答案了吗?

标签: php search pdo filter


【解决方案1】:

你应该这样做:

I have select and textbox input for my filter and search <-----

所以你搜索 2 个参数对吗? select 有什么? 您可以通过这种方式搜索不同的字段:

public function searchUserStatus($search, $keyword) {    
      $sql = "SELECT tbl_user.user_id, tbl_user.username, tbl_user.password, 
      tbl_user.first_name,tbl_user.last_name, tbl_user.is_employed, 
      tbl_barangay.barangay_name FROM tbl_user INNER JOIN tbl_barangay ON 
      tbl_barangay.barangay_id = tbl_user.barangay_id WHERE 
      (";
      switch($select){
          case 'first_name':
              $sql .= "tbl_user.first_name LIKE :keyword);";
              break;
          case 'last_name':
              $sql .= "tbl_user.last_name LIKE :keyword);";
              break;
          case 'username':
              $sql .= "tbl_user.username LIKE :keyword);";
              break;
          case 'barangay_name':
              $sql .= "tbl_user.barangay_name LIKE :keyword);";
              break;
      }

      ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    • 1970-01-01
    相关资源
    最近更新 更多