【问题标题】:how to use wildcard when using a form to get mysql results使用表单获取mysql结果时如何使用通配符
【发布时间】:2021-12-19 22:21:59
【问题描述】:

我在编码方面非常基础,并且有以下 sn-p 代码

$connection = new PDO($dsn, $username, $password, $options);

    $sql = "SELECT * 
                    FROM birds
                    WHERE Species Like :Species";
                

    $Species = $_POST['Species'];

    $statement = $connection->prepare($sql);
    $statement->bindParam(':Species', $Species, PDO::PARAM_STR);
    $statement->execute();

    $result = $statement->fetchAll();
} catch(PDOException $error) {
    echo $sql . "<br>" . $error->getMessage();
}

}

只要拼写正确,它就可以正常工作。我如何在搜索功能中添加通配符,因为我尝试过的所有变体似乎都不起作用。

我还想知道如何让它根据表单中输入的结果在几列中查找数据。即从一个文本字段中搜索姓名或位置或年龄。

【问题讨论】:

标签: php mysql forms search


【解决方案1】:

如果您试图获得部分匹配,例如,如果您搜索“humming”并希望它匹配“colorful hummingbird”,那么根据this answer,尝试将查询更改为:

SELECT * FROM birds WHERE Species Like CONCAT('%', :Species, '%')

这仍然只匹配:Species 字符串本身存在于Species 列值中的某个位置。如果您希望能够将通配符实际放入您自己的搜索词中,那就有点复杂了。

【讨论】:

  • 谢谢,我改了之后页面就加载不出来了
猜你喜欢
  • 1970-01-01
  • 2015-09-09
  • 1970-01-01
  • 2011-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-27
相关资源
最近更新 更多