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