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
。
我正在尝试在 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
。