2

我的数据库中有一个名称列表,我必须找到我在 url 中传递的名称的 id。

我的问题是我在 url 中传递的名称中没有空格,而保存的记录将在数据库中。当我搜索数据库时,我没有找到任何记录。

例如,数据库记录是“我的名字”,而我将在 url 中传递和搜索的是“我的名字”

if(isset($_GET["name"])) $name = $_GET["name"];

SELECT id
FROM table
WHERE name Like '%$name%'

谢谢你的帮助。

4

3 回答 3

6
// id don't know the exact syntax, but this is what you are searching for I guess:

// replace spaces with nothin temporarily, then check equal (=) not like (%%) if name is exactly the same (except the spaces)

SELECT id, REPLACE(name, ' ', '') AS tmp FROM table WHERE tmp='%$name%'
于 2012-05-18T14:42:22.117 回答
3

显然不是存储或搜索的正确方法,但如果必须,请尝试用空格替换空格,如下所示:

SELECT id
FROM table
WHERE REPLACE(`name`,' ','') LIKE '%$name%'
于 2012-05-18T14:22:42.407 回答
2

我认为最佳做法是存储另一列,称为 name_nospaces 并在插入 My Name 记录时将 myname 作为计算值插入其中。您还可以创建一个包含 myname 作为列的视图并对其进行查询,但原始表中另一列的优点是可以对其进行索引以便快速检索。

于 2012-05-18T14:18:44.317 回答