0

我正在制作一个自动完成表格并从我的数据库中请求名称。这是我数据库中的表

user_id | firstname | lastname

我可以使用这个获取“搜索词”的数据

$query = "SELECT user_id, firstname, lastname FROM users WHERE   firstname like :searchterm  ";

但我想扩展它,这样我也可以同时搜索名字和姓氏,例如搜索“John D...”。我认为有一种方法可以将这两列连接起来,然后进行搜索。有人可以解释一下吗?我只是从这个mysql的东西开始。

4

1 回答 1

0

当您的搜索词中有空格时,您通常需要将字符串拆分为多个部分,然后再将其放入查询中。如果AND您想匹配所有输入的搜索词,或者OR如果您想匹配任何一个,请使用。例子:

Search: john james smith

<?php

$search = "john james smith";
$bits = explode(" ", $search);
foreach($bits as $key => $bit) {
    $bits[$key] = '(`field1` LIKE "' . $bit . '" AND `field2` LIKE "' . $bit . '")';
}
$sql = implode(' OR ', $bits);
// (`field1` LIKE "john" AND `field2` LIKE "john") OR (`field1` LIKE "james" AND `field2` LIKE "james") OR (`field1` LIKE "smith" AND `field2` LIKE "smith")

?>

演示:https ://eval.in/66808

看起来您正在使用 PDO(这很好),因此您只需将绑定参数放入该字符串,然后在当前 SQL 查询的末尾将其连接到WHERE子句中。

于 2013-11-13T00:55:46.277 回答