pdo mysql like_PHP PDO MySQL查询LIKE – >多个关键字

我在MySQL中有一个用户表,希望按名称搜索.现在我有以下代码:

$search = @$_GET['q'];

$search = strtoupper($search);

$search = strip_tags($search);

$search = trim($search);

$query = $con->prepare('SELECT * FROM `users` WHERE name LIKE ?');

$query->execute(array('%'.$search.'%'));

$result = $query->rowCount();

echo $result;

?>

问题是我想拥有多个关键字.让我们说有人打字“这里应该是一个人的好名字”然后它会搜索“here”,“should”,“be”等等,并显示每个行中“name”列中有单词的结果.我在网上搜索并读到可以做“OR name LIKE?”与关键字一样多次,但我无法真正得到它的工作,我不确定它是否足够优化~20个单词(如果用这么多单词搜索).如果应该使用它,你可以帮助我改变我的代码,以便它可以独立搜索每个单词吗?

谢谢!

编辑:

我能够通过发布在这个帖子中的一个人解决这个问题.以下解决方案适合我:

$search = isset($_POST['q']) ? $_POST['q'] : '';

$search = strtoupper($search);

$search = strip_tags($search);

$search = trim($search);

$split_words = explode(" ", $search);

if(count($split_words) > 0) {

$sql = "SELECT * FROM `users` WHERE ";

for($i=0 ; $i < count($split_words); $i++){

$sql .= " name LIKE ? OR";

}

$sql = substr($sql , 0, -3); //Remove last 3 characters OR with space

array_walk($split_words, "addPercentage");

$query = $con->prepare($sql);

$query->execute($split_words);

}

function addPercentage(&$value, $key) {

$value = '%'.$value.'%';

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值