我的数据库中有一个名称列表,我必须找到我在 url 中传递的名称的 id。
我的问题是我在 url 中传递的名称中没有空格,而保存的记录将在数据库中。当我搜索数据库时,我没有找到任何记录。
例如,数据库记录是“我的名字”,而我将在 url 中传递和搜索的是“我的名字”
if(isset($_GET["name"])) $name = $_GET["name"];
SELECT id
FROM table
WHERE name Like '%$name%'
谢谢你的帮助。
// 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%'
显然不是存储或搜索的正确方法,但如果必须,请尝试用空格替换空格,如下所示:
SELECT id
FROM table
WHERE REPLACE(`name`,' ','') LIKE '%$name%'
我认为最佳做法是存储另一列,称为 name_nospaces 并在插入 My Name 记录时将 myname 作为计算值插入其中。您还可以创建一个包含 myname 作为列的视图并对其进行查询,但原始表中另一列的优点是可以对其进行索引以便快速检索。