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 中列名不明确的查询错误,因为列名不同。
最佳答案
我正在写这个答案,因为无法在评论中显示它。请随意忽略它。
您面临的问题似乎与将参数值注入(inject) SQL 查询有关。简单(危险)的方法是简单地连接字符串,如下所示:
$stmt = $conn->prepare(
"select * from my_table where name = '" . $param1 . "'");
尽管它适用于简单的情况,但您的情况更加复杂且令人困惑。大多数时候,您会使用准备好的语句,如下所示:
$stmt = $conn->prepare("select * from my_table where name = ?");
$stmt->bind_param("sss", $param1);
这样,参数就会以正确的方式注入(inject)。在您的情况下,您需要在参数前面添加 %
,因为它将用于 LIKE
运算符。
关于php - SQL 查询未从数据库中找到确切的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51200837/