Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.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,我正在开发一个程序,其中用户通过课程代码或名称搜索“课程”。我试图这样做,如果用户搜索“CODE1002”,数据库中的Code1002el仍将返回(有一个空格)。正如其他帖子所示,我尝试使用REPLACE函数,但没有成功 这是我当前的代码(但它不会忽略空格): $records = $conn->prepare('SELECT (SELECT COUNT(*) FROM courses WHERE (course_code LIKE :searchText OR course_name L

我正在开发一个程序,其中用户通过课程代码或名称搜索“课程”。我试图这样做,如果用户搜索“CODE1002”,数据库中的Code1002el仍将返回(有一个空格)。正如其他帖子所示,我尝试使用REPLACE函数,但没有成功

这是我当前的代码(但它不会忽略空格):

$records = $conn->prepare('SELECT (SELECT COUNT(*) FROM courses WHERE (course_code LIKE :searchText OR course_name LIKE :searchText)) AS course_count, course_id, course_code, course_name FROM courses WHERE (course_code LIKE :searchText OR course_name LIKE :searchText) ORDER BY course_code LIMIT 6');

$final_search_term = "%".$search_term."%";
$records->bindParam(':searchText', $final_search_term);
$records = $conn->prepare('SELECT (SELECT COUNT(*) FROM courses WHERE (REPLACE(course_code,' ','') LIKE :searchText OR course_name LIKE :searchText)) AS course_count, course_id, course_code, course_name FROM courses WHERE (REPLACE(course_code,' ','') LIKE :searchText OR course_name LIKE :searchText) ORDER BY course_code LIMIT 6');

$final_search_term = "%".$search_term."%";
$records->bindParam(':searchText', $final_search_term);
我尝试在课程代码中添加替换以忽略空格,但没有成功:

$records = $conn->prepare('SELECT (SELECT COUNT(*) FROM courses WHERE (course_code LIKE :searchText OR course_name LIKE :searchText)) AS course_count, course_id, course_code, course_name FROM courses WHERE (course_code LIKE :searchText OR course_name LIKE :searchText) ORDER BY course_code LIMIT 6');

$final_search_term = "%".$search_term."%";
$records->bindParam(':searchText', $final_search_term);
$records = $conn->prepare('SELECT (SELECT COUNT(*) FROM courses WHERE (REPLACE(course_code,' ','') LIKE :searchText OR course_name LIKE :searchText)) AS course_count, course_id, course_code, course_name FROM courses WHERE (REPLACE(course_code,' ','') LIKE :searchText OR course_name LIKE :searchText) ORDER BY course_code LIMIT 6');

$final_search_term = "%".$search_term."%";
$records->bindParam(':searchText', $final_search_term);

除了不忽略空格之外,第一个代码工作得很好。

您将替换放在了错误的一边。为了安全起见,我们对两个操作数都执行此操作:

REPLACE(course_code, ' ', '') LIKE REPLACE(:searchText, ' ', '')

你把替代品放错了方向。为了安全起见,我们对两个操作数都执行此操作:

REPLACE(course_code, ' ', '') LIKE REPLACE(:searchText, ' ', '')

可能是esier先在php中进行替换不应该替换在LIKE的右侧?可能是esier先在php中进行替换不应该替换在LIKE的右侧?你知道为什么下面的方法不起作用吗?从课程中选择课程id、课程代码、课程名称(替换(courses.course\u code,,'')如替换(\'%COSC 2%\','','',''))按课程代码限制顺序6我正在尝试测试一个较小的部分,我得出结论是\'%COSC 2%\'导致了问题。但是,当我在phpmyadmin中执行此操作时,不会返回任何结果(在删除转义()之后):S@JasonFel . . . 您不希望SQL代码中出现反斜杠。你只需要一个报价。你知道为什么下面的报价不起作用吗?从课程中选择课程id、课程代码、课程名称(替换(courses.course\u code,,'')如替换(\'%COSC 2%\','','',''))按课程代码限制顺序6我正在尝试测试一个较小的部分,我得出结论是\'%COSC 2%\'导致了问题。但是,当我在phpmyadmin中执行此操作时,不会返回任何结果(在删除转义()之后):S@JasonFel . . . 您不希望SQL代码中出现反斜杠。你只需要一个报价。