【发布时间】:2021-04-23 22:08:45
【问题描述】:
我正在尝试通过 mysqli_query() 在 php 上使用此查询:
$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 中它返回 0 行,但在 PHP 我的管理员上完全相同的查询,在同一个数据库中,返回 2 行
有人知道我做错了什么吗?
这是我的连接字符串:
mysqli_report(MYSQLI_REPORT_STRICT);
try {
$connection = mysqli_connect("localhost", "root", "", "test_db", "3308");
OBS: $Result 正在返回 true,如果我做了一些更“普通”的查询,比如
SELECT * FROM Cidades
正常工作
更多信息:
不管有没有try catch,我的回报是
【问题讨论】:
-
请同时发布数据库代码的其他部分。我的想法: mysql_query 返回一个 0 行的 mysql_result 对象是否返回 FALSE?还有一个 PHP 错误?如果连接失败或 php 文件中出现其他问题,您将得到 FALSE 并出现 PHP 错误。你检查了吗?你检查了 error.log 吗?如果结果应该为假,请同时检查 mysqli_error()。
-
mysqli_report(MYSQLI_REPORT_STRICT);什么都不做。你需要mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); -
我已经用这些信息完成了我的问题,但无论如何,是的,我检查了,0 个错误,$result 是真的,如果我写了一个较小的查询,比如 select * from cidades,就可以了跨度>
-
不,不是表/列排序规则。我的意思是连接字符集
-
您是否阅读了手册中的示例? php.net/manual/en/mysqli.construct.php 它们显示了正确建立连接所需的 3 个步骤。