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中列名不明确的查询错误。
答案 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%'