gpt4 book ai didi

php - 如何基于 GET 搜索选择多个字段?

转载 作者:行者123 更新时间:2023-11-29 00:59:01 24 4
gpt4 key购买 nike

我正在制作一个搜索站点,用户可以在其中按公司名称或表行 cat1、cat2、cat3 进行搜索。 “猫”行与公司名称位于同一个表中。我已对其进行设置,因此如果我搜索正确的业务,我会返回业务信息。但我需要让它显示具有您搜索的类别名称的企业。

**基本上我要的是获取搜索 (php) 以搜索企业名称或三个类别之一。

任何帮助,将不胜感激......这是我的代码以备不时之需(虽然我认为这应该是一个非常简单的任务,但也许不是,我是 PHP 初学者)

            include('config.php');
$var = $_REQUEST['search'];
$trimmed = trim($var);
$search = ucfirst($var);


$result = mysql_query("SELECT * FROM gj WHERE name like '%$search%' ORDER by name") or trigger_error(mysql_error());
$num_rows = mysql_num_rows($result);

然后我使用 while 循环从中获取所有代码。

 while($row = mysql_fetch_array($result))
{
$id=$row['id'];
$name=$row['name'];
$phone=$row['phone'];
$website=$row['website'];
$city=$row['city'];
$address=$row['address1'];
$zipcode=$row['zipcode'];
$addressmap = preg_replace('/\s/', '+',$address);
$citymap = preg_replace('/\s/', '+',$city);

echo"

最佳答案

 include('config.php');
$searchfields = array('name', 'cat1', 'cat2', 'cat3', )
$cleandata = mysql_real_escape_string(trim(strtolower($_REQUEST['search'])));

$where = array();
foreach($searchfields as $field) {
$where[] = 'lcase('.$field.') like \'%.$cleandata.%\'';
}

$result = mysql_query('SELECT * FROM gj WHERE '.implode(' OR ', $where).' ORDER by name') or trigger_error(mysql_error());
$num_rows = mysql_num_rows($result);

我添加了一个变量 cleandata,其中包含已清理的请求数据(以防止 SQL 注入(inject))。

我创建了一个变量搜索字段,可以轻松扩展它以搜索更多字段。

要搜索更多字段,只需扩展数组数据:

 $searchfields = array('name', 'cat1', 'cat2', 'cat3', 'cat4', )

编辑添加了不区分大小写


编辑 添加了 PDO

请注意,自从我写完这个答案后,社区就开始了 deprecation process古老的mysql_*。查看red box ?相反,您应该了解 prepared statements并使用 PDOMySQLi .如果你不能决定,this article会帮助选择。如果你想学习,here is a good PDO tutorial .

使用 PDO 重写上面的答案看起来像下面这样:

$dbConnection = new PDO('mysql:dbname=dbtest;host=127.0.0.1;charset=utf8', 'user', 'pass');
$dbConnection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$searchfields = array('name', 'cat1', 'cat2', 'cat3', )

$where = array();
foreach($searchfields as $field) {
$where[] = 'lcase(' . $field . ') LIKE :keyword';
}

$stmt = $dbConnection->prepare('SELECT * FROM gj WHERE ' . implode(' OR ', $where) . ORDER BY name);
$stmt->execute(array(
':keyword' => '%' . trim(strtolower($_REQUEST['search'])) . '%',
));

关于php - 如何基于 GET 搜索选择多个字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4634921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com