php - SQL 查询未从数据库中找到确切的名称

标签 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 中列名不明确的查询错误,因为列名不同。

最佳答案

我正在写这个答案,因为无法在评论中显示它。请随意忽略它。

您面临的问题似乎与将参数值注入(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/

相关文章:

php - spl_autoload_register 和命名空间问题

php - MySQL/Html 编码

php - 如何从数据库中选择数据并在重复时设置为单行

sql - 在 PostgreSQL 上使用 SQL 连接数组中的多行

mysql - SQL 最大大小 LONGTEXT

php - 根据类别循环结果,但仅显示类别一次

php - 如何在远程 VPS 上运行 socketo.me 聊天服务器

php - 是否可以对大文本进行编码和解码?

MySql Workbench 无法打开 SSH 隧道

sql - 按两列值的计数过滤行