【问题标题】:MYSQL search resultMYSQL 搜索结果
【发布时间】:2017-12-04 08:53:56
【问题描述】:

我有一个代码,里面有用户会从 MySQL 中搜索名字。

首先mysql应该在first_name中搜索,然后去last_name寻找相同的搜索选项,然后显示结果。 (来自名字和姓氏)

我试过了,但它只显示了名字的结果

请帮帮我。

这里是代码:-

try {
  $keyword = trim($_GET["keyword"]);
  if ($keyword <> "" ) {
    $sql = "SELECT * FROM tbl_contacts WHERE 1 AND "
            . " (first_name LIKE :keyword) ORDER BY first_name ";
    $stmt = $DB->prepare($sql);

    $stmt->bindValue(":keyword", $keyword."%");

  } elseif ($keyword <> "" ) {
    $sql = "SELECT * FROM tbl_contacts WHERE 1 AND "
            . " (last_name LIKE :keyword) ORDER BY first_name ";
    $stmt = $DB->prepare($sql);

    $stmt->bindValue(":keyword", $keyword."%");

  }else {
    $sql = "SELECT * FROM tbl_contacts WHERE 1 ORDER BY first_name ";
    $stmt = $DB->prepare($sql);
  }

  $stmt->execute();
  $total_count = count($stmt->fetchAll());

【问题讨论】:

  • 你为什么有WHERE 1 AND?只是想知道。
  • 使用OR而不是AND,如果一个失败,两者都将使用AND
  • 你的elseif 没有任何意义。你永远不会到达那里。
  • @jeroen that too ;-) 查询需要修改为在一个查询中使用OR
  • @Fred-ii- 那么如何获得代码..?

标签: php mysql sql


【解决方案1】:

尽量避免以其他方式发布相同的问题,编辑相同的问题。

你在MYSQL OR not working问了同样的问题

希望这对你有帮助:-

try {
  $keyword = trim($_GET["keyword"]);
  if ($keyword <> "" ) {
    $sql = "SELECT * FROM tbl_contacts WHERE 1 AND "
            . " (first_name LIKE :keyword OR last_name LIKE :keyword) ORDER BY first_name ";
    $stmt = $DB->prepare($sql);

    $stmt->bindValue(":keyword", $keyword."%");
  }else {
    $sql = "SELECT * FROM tbl_contacts WHERE 1 ORDER BY first_name ";
    $stmt = $DB->prepare($sql);
  }

  $stmt->execute();
  $total_count = count($stmt->fetchAll());

我也回答了你新的重复问题https://stackoverflow.com/a/44859408/7678788

【讨论】:

    猜你喜欢
    • 2018-12-10
    • 2014-11-25
    • 2014-11-14
    • 2013-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-28
    • 2021-09-10
    相关资源
    最近更新 更多