【问题标题】:Multi search box using like operator使用like运算符的多搜索框
【发布时间】:2011-12-06 17:58:22
【问题描述】:

我有 3 个搜索框,用户可以在任意 3 个或全部 3 个搜索框中输入信息。

$user = $_POST['user']; 
$firstname = $_POST['firstname'];   
$lastname = $_POST['lastname']; 

$query = "SELECT user.user, user.firstname, user.lastname
          FROM user WHERE type = 'Owner' AND user LIKE '%$user%'";

如果这个人是全部3个,我怎么把这些放进去?

 $query = "SELECT user.user, user.firstname, user.lastname 
           FROM user WHERE type = 'Owner' AND user LIKE '%$user%' 
           OR/AND type = 'Owner' AND fname LIKE '%$firstname%' 
           OR/AND type = 'Owner' AND lname LIKE '%$lastname%'";

这是我所拥有的,但不能正常工作,但我需要类似 OR/AND 等的东西...有人可以告诉我该怎么做吗?谢谢

【问题讨论】:

  • 警告您的代码容易受到 sql 注入攻击。
  • 你为什么要检查你的问题并将标题和正文更改为 asadasdas asda sda sdas dasd asd asd?

标签: php sql-like


【解决方案1】:

如果给定值,这将结合 WHERE 语句

$user      = mysql_real_escape_string($_POST['user']); 
$firstname = mysql_real_escape_string($_POST['firstname']);   
$lastname  = mysql_real_escape_string($_POST['lastname']);

$where[] = "type='Owner'";
if(strlen($user) > 0){
    $where[] = "user LIKE '%$user%'";
} 
if(strlen($firstname) > 0){
    $where[] = "firstname LIKE '%$firstname%'";
}
if(strlen($lastname) > 0){
    $where[] = "lastname LIKE '%$lastname%'";
}
$query = "SELECT user.user, user.firstname, user.lastname
          FROM user WHERE ". implode(' AND ', $where);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-02
    • 1970-01-01
    • 2011-07-08
    • 2015-06-21
    • 1970-01-01
    • 2019-08-24
    • 2020-09-21
    相关资源
    最近更新 更多