Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.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 使用LIKE的Mysql搜索框_Php_Mysql_Sql - Fatal编程技术网

Php 使用LIKE的Mysql搜索框

Php 使用LIKE的Mysql搜索框,php,mysql,sql,Php,Mysql,Sql,我在我的网站上创建了一个搜索引擎,用户可以输入任何他们喜欢的内容并显示结果。下面是我用来获得结果的代码,但由于语法错误,它无法工作 在我的数据库中,我有10行,每行包含4列(id、author、second\u author、book\u name)。我的目标是,如果用户输入了在“author”中找到的名称,我想检索该结果,或者“如果他们输入了在book_name中找到的名称,我想检索该结果,等等。” 我知道正确的方法是使用LIKE操作符,但是如果您想将关键字与多个列进行比较,您应该怎么做呢 我

我在我的网站上创建了一个搜索引擎,用户可以输入任何他们喜欢的内容并显示结果。下面是我用来获得结果的代码,但由于语法错误,它无法工作

在我的数据库中,我有10行,每行包含4列(id、author、second\u author、book\u name)。我的目标是,如果用户输入了在“author”中找到的名称,我想检索该结果,或者“如果他们输入了在book_name中找到的名称,我想检索该结果,等等。”

我知道正确的方法是使用LIKE操作符,但是如果您想将关键字与多个列进行比较,您应该怎么做呢

我已经试过了,但不起作用:

SELECT * FROM book_list WHERE author OR second_author OR book_name LIKE '%".$search_key."%'

这只是一个语法调整:

SELECT * FROM book_list
WHERE author LIKE '%".$search_key."%'
OR second_author LIKE '%".$search_key."%'
OR book_name LIKE '%".$search_key."%'

希望对您有所帮助

您的查询有错误,您必须按以下方式搜索每一列

SELECT * FROM book_list WHERE author  LIKE '%".$search_key."%' OR second_author  LIKE '%".$search_key."%' OR book_name LIKE '%".$search_key."%'

我还希望您知道,您面临sql注入的风险,请看这里。您应该使用prepared Station来避免任何风险

@Waygood:您如何知道
$search\u key
的消毒方法?一个公平的观点,但OP没有指定是否已“清理”SQL注入风险的$search\u key,这毕竟是一个SQL语法问题。@zerkms我不知道,您也不知道。这就是重点!建议:如果你没有,你应该考虑消毒。already@Waygood:我们也不知道数据是如何使用的。如果输出到HTML页面,则存在XSS和CSRF风险。如果它被发送到C++守护进程——如果执行不好,就会有堆栈溢出的风险。“我们可以把所有我们认为相关的问题都提出来吗?”泽克姆斯·法比奥建议道。我贴了一个有趣的链接,别乱翻了