Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 不带空格的mysql搜索_Php_Mysql - Fatal编程技术网

Php 不带空格的mysql搜索

Php 不带空格的mysql搜索,php,mysql,Php,Mysql,我的数据库中有一个名字列表,我必须找到我在url中传递的名字的id 我的问题是,我在url中传递的名称中没有空格,而保存的记录将在数据库中。当我搜索数据库时,没有找到任何记录 e、 g数据库记录是“我的名字”,而我将在url中传递和搜索的是“我的名字” 谢谢您的帮助。我认为最好的做法是存储另一个列,名为name\u nospaces,并在插入My name记录时将myname作为计算值插入其中。您也可以创建一个包含myname作为列的视图并对其进行查询,但原始表中另一列的优点是,可以为其编制索引

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

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

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


谢谢您的帮助。

我认为最好的做法是存储另一个列,名为name\u nospaces,并在插入My name记录时将myname作为计算值插入其中。您也可以创建一个包含myname作为列的视图并对其进行查询,但原始表中另一列的优点是,可以为其编制索引以进行快速检索。

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

SELECT id
FROM table
WHERE REPLACE(`name`,' ','') LIKE '%$name%'

如何设置URL中的值,可以指定一个分隔符,然后使用该分隔符将其分解,有效地分隔名称。或者类似的东西,所以您将脚本称为script.php?name=myname或script.php?name=my%20name。。。你为什么还要使用GET而不是POST?你这里有一个大规模的安全漏洞。阅读有关SQL注入的内容。我不明白为什么不能用空格传递它。是的,这只是为了测试,我在本例中使用了get,我使用script.php?name=myname。此外,我认为MySQL不直接支持计算列。有一些巧妙的解决方法,比如创建一个触发器来计算插入时的值。但是,如果您没有对其他任何内容使用触发器,以确保数据库不会过于复杂,我个人认为,将计算值与其余数据一起插入会更容易。(插入blah值('My Name','myname');)如果您想使用触发器,请参考以下内容:谢谢,似乎是beast的方式,我希望mysql中可能会有东西告诉它在搜索时忽略空格,但事实并非如此
SELECT id
FROM table
WHERE REPLACE(`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%'