Php 查询不适用于 mysqli_query() 但适用于 php 我的管理员

Php query don't work with mysqli_query() but work on php my admin

我正在尝试在 php 上使用此查询 mysqli_query():

$query = 
    ("
                SELECT
                    COALESCE(
                        (
                            SELECT
                                indicadores_respostas.resposta_text
                            FROM
                                indicadores_respostas
                                LEFT JOIN indicadores_secoes_itens ON indicadores_secoes_itens.id = indicadores_respostas.id_secao_item
                            WHERE
                                indicadores_respostas.id_indicador = indicadores.id
                                AND indicadores_secoes_itens.titulo = 'Longitude'
                        ),
                        (
                            SELECT
                                cidades.longitude
                            FROM
                                cidades
                                INNER JOIN indicadores_respostas
                                LEFT JOIN indicadores_secoes_itens ON indicadores_secoes_itens.id = indicadores_respostas.id_secao_item
                            WHERE
                                indicadores.id = indicadores_respostas.id_indicador
                                AND cidades.cidades_id = CAST(indicadores_respostas.resposta_text AS SIGNED)
                                AND indicadores_secoes_itens.titulo = 'Cidade'
                        )
                    ) AS Longitude
                FROM
                    indicadores
                    LEFT JOIN indicadores_respostas ON indicadores_respostas.id_indicador = indicadores.id
                    LEFT JOIN indicadores_secoes_itens ON indicadores_secoes_itens.id = indicadores_respostas.id_secao_item
                WHERE
                    indicadores_secoes_itens.titulo = 'Nome da capacitação' OR indicadores_secoes_itens.titulo = 'Instituição'
    ");

    $result = mysqli_query($connection, $query);

但是在 Php 它 return 给我 0 行,但是在 PHP 我的管理员上的完全相同的查询,在同一个数据库中, return 2 行

有人知道我做错了什么吗?

这是我的连接字符串:

mysqli_report(MYSQLI_REPORT_STRICT);
try {
    $connection = mysqli_connect("localhost", "root", "", "test_db", "3308");

OBS:$Result 是 returning true 如果我做了一些更“gereric”的查询,比如

SELECT * FROM Cidades

正常工作

更多信息:

不管有没有try catch,我的return是

使用 mysqli 连接的正确方法包括 3 个步骤:启用错误报告、创建 mysqli 实例 class 以及设置正确的字符集。

取自 PHP.net 的示例演示了这些步骤:

<?php

/* You should enable error reporting for mysqli before attempting to make a connection */
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

$mysqli = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');

/* Set the desired charset after establishing a connection */
mysqli_set_charset($mysqli, 'utf8mb4');

大多数时候正确的字符集是 utf8mb4,但您可能使用了不同的字符集。如果您仍在使用已弃用的 utf8,我建议您尽快更改它。

正确的字符集确保 MySQL 理解客户端使用的字符编码。当使用不同的字符集时,像 'Nome da capacitação' 这样的短语可能会被不同地编码,如果你使用不正确的字符集, MySQL 将 return 没有匹配的结果。您必须确保连接字符集与 table 归类中使用的字符集相匹配。作为最佳实践,我强烈建议您坚持在所有地方使用 utf8mb4