SQL查询无法从数据库中找到确切的名称

时间:2018-07-05 22:45:17

标签: php mysql sql

SELECT * FROM hge_funcionarios 
 JOIN hospitais
 ON hge_funcionarios.hospital_id = hospitais.id_hospitais 
 JOIN funcoes
 ON hge_funcionarios.funcao_id = funcoes.id_funcoes
WHERE nome LIKE '%$search%'
ORDER BY hospital_id DESC

当我尝试使用数据库中的确切名称时,不会显示任何结果。 如果我搜索"Larissa""LARISSA",即使我的数据库中有"LARISSA CAMPOS",也没有结果。

如果我尝试"lar"或类似的方法,我可以找到它,但是当它与"LARISS"之类的数据库名称太接近时,我将找不到它。 我尝试排序和字符集设置,但没有成功。

编辑:由于列名是不同的,因此这不是SQL中列名不明确的查询错误。

2 个答案:

答案 0 :(得分:1)

我正在写此答案,因为不可能在评论中显示它。随意忽略它。

您面临的问题似乎与将参数值注入SQL查询有关。一种简单(危险)的方法是简单地连接字符串,如:

$stmt = $conn->prepare(
  "select * from my_table where name = '" . $param1 . "'");

即使适用于简单的案例,您的案例也更加复杂和混乱。大多数情况下,您将使用 Prepared Statements (准备好的报表),例如:

$stmt = $conn->prepare("select * from my_table where name = ?");
$stmt->bind_param("sss", $param1);

这样,将以正确的方式注入参数。在您的情况下,您需要在参数之前加上%并将其附加到LIKE运算符上。

答案 1 :(得分:-1)

WHERE nome LIKE '%$search%'

可能是$是原因。尝试类似:WHERE nome LIKE '%search%'