Android — SQL-запрос возвращает значение, но $ результат на PHP всегда пустой массив

У меня есть этот файл .php (здесь много эха, но это была только моя отладка):

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
try
{
$host="localhost:2222";
$username="karutakanji"; //replace with database username
$password="123456"; //replace with database password
$db_name="pairg_karutakanji_app"; //replace with database name

$con=mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_set_charset("utf8");
mysql_select_db("$db_name")or die("cannot select DB");

$nome_usuario = isset($_POST['nome_usuario']) ? $_POST['nome_usuario'] : '';
$categorias = isset($_POST['categorias']) ? $_POST['categorias'] : '';
$sql = "select count(kanji) as quantas_vezes_errou_o_kanji,kanji,nome_categoria from (select kanji,nome_categoria from (select kanji,id_categoria from (select id from (Select id_partidas_treinamento from partidas_treinamento inner join usuario on partidas_treinamento.id_usuario = usuario.id_usuario where nome_usuario='$nome_usuario') as tabelacomidspartidasdousuarioinformado inner join partidas_treinamento_kanjis on partidas_treinamento_kanjis.id_partidas_treinamento = tabelacomidspartidasdousuarioinformado.id_partidas_treinamento where se_acertou='não') as tabelaidskanjisusuarioerrou inner join jlptnew on jlptnew.id = tabelaidskanjisusuarioerrou.id) as kanjieidcategoriakanjiserrados inner join categorias where categorias.id_categoria = kanjieidcategoriakanjiserrados.id_categoria) as kanjisenomecategoriakanjiserrados ";

$array_categorias = explode("," , "$categorias");
$i = 0;
$len = count($array_categorias);

$array_categorias = array_filter($array_categorias);
if (!empty($array_categorias))
{
$sql = $sql . "where (";
while($i < $len)
{
$uma_categoria = $array_categorias[$i];
$sql = $sql . "nome_categoria = '" . $uma_categoria . "'";
if ($i !== $len - 1)
{
$sql = $sql . " or ";
}
$i = $i + 1;
}
$sql = $sql . ")";
}

$sql = $sql . " GROUP BY kanji ORDER BY quantas_vezes_errou_o_kanji DESC";
mysql_set_charset("utf8");
$result = mysql_query($sql);
if(!$result)
{
echo mysql_error($con);
}echo "/////////////////" . $sql . "///////////////////////////";
$json = array();

if(mysql_num_rows($result)){
while($row=mysql_fetch_assoc($result)){
$json[]=$row;
}
}mysql_close($con);
array_walk_recursive($json, function (&$item, $key) { if (is_string($item)) $item = mb_encode_numericentity($item, array (0x80, 0xffff, 0, 0xffff), 'UTF-8'); });
echo mb_decode_numericentity(json_encode($json), array (0x80, 0xffff, 0, 0xffff), 'UTF-8');

}
catch (Exception $e) {
echo $e;
echo 'Caught exception: ' .  $e->getMessage() . "\n";
}

?>

Я использую некоторую отладку на моем затмении, основанном на эхе, которое я положил на php. Я сделаю это:

httpPost.setEntity(new UrlEncodedFormEntity(param));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
String mensagemEntity1 = EntityUtils.toString(httpEntity);
mensagemEntity1 = mensagemEntity1 + "";

И инструмент debbuger от eclipse adt (я использую файл .php в проекте Android) говорит, что мой sql такой:

выберите количество (кандзи) как
quantas_vezes_errou_o_kanji, kanji, nome_categoria from (выбрать
кандзи, nome_categoria из (выберите кандзи, id_categoria из (выберите id
из (выберите id_partidas_treinamento из partidas_treinamento inner
присоединяйтесь к usuario на partidas_treinamento.id_usuario = usuario.id_usuario
где nome_usuario = ‘fabioandrews’) как
tabelacomidspartidasdousuarioinformado внутреннее соединение
Partidas_treinamento_kanjis на
partidas_treinamento_kanjis.id_partidas_treinamento =
tabelacomidspartidasdousuarioinformado.id_partidas_treinamento где
se_acertou = ‘não’) as tabelaidskanjisusuarioerrou внутреннее объединение
jlptnew.id = tabelaidskanjisusuarioerrou.id) как
kanjieidcategoriakanjiserrados внутренние объединения категории, где
categoryorias.id_categoria = kanjieidcategoriakanjiserrados.id_categoria)
как kanjisenomecategoriakanjiserrados где (nome_categoria = ‘Saúde’
или nome_categoria = ‘Educação’ или nome_categoria = ‘Supermercado’ или
nome_categoria = ‘Tempo’) ГРУППА ПО КАНДЖИ ЗАКАЗАТЬ
quantas_vezes_errou_o_kanji DESC

Когда я выполняю этот SQL-запрос на MySQL верстак, он работает нормально, и я получаю свои результаты. Тем не менее, в .php, результатом $ всегда будет пустая строка, например: ‘[]’

Нет сообщений об ошибках, ничего. Почему мой результат — пустая строка, если мой sql-запрос верен?

0

Решение

Я бы проверил кодировку php файла.

Линия mysql_set_charset("utf8"); устанавливает кодировку UTF-8.

Действительно ли запрос написан в UTF-8? Если не оговорено, где:

nome_categoria = 'Saúde' or nome_categoria = 'Educação' or nome_categoria = 'Supermercado' or nome_categoria = 'Tempo'

отфильтрует все результаты и не вернет строки.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector